<template>
  <div class="mettingDetail">
    <!-- 反馈新建编辑框 -->
    <CommonDialog
      :title="createDialogTitle"
      width="90%"
      v-bind:dialogVisible="createDialogVisible"
      v-if="createDialogVisible"
      @on-change-dialogVisible="createDialogVisibleChange"
      class="feedback"
      top="10vh"
    >
      <template #body>
        <el-form
          class="createForm"
          ref="createForm"
          label-position="left"
          label-width="135px"
          :model="createForm"
          :rules="createFormFormRules"
          size="mini"
        >
          <el-row :gutter="10" v-if="createType == 'add'">
            <el-col :span="12" v-if="createType == 'add'">
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input v-model.number="createForm.feedBackNumber" @change="feedIdChange" clearable></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12" v-else>
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input v-model="createForm.feedBackNumber" disabled></el-input>
              </el-form-item>
            </el-col>

            <el-col :span="12" v-if="createType == 'edit'">
              <el-form-item label="创建人" prop="createUserName">
                <el-input v-model="createForm.createUserName" disabled></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12" v-else>
              <el-form-item label="创建人" prop="createUser">
                <el-input v-model="createForm.createUser" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createType == 'add'">
            <el-col :span="12" :offset="12">
              <el-form-item label="创建天数" prop="createDay">
                <el-input v-model="createForm.createDay" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createType == 'add'">
            <el-col :span="24">
              <el-form-item label="所属产品" prop="productName">
                <el-input v-model="createForm.productName" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createType == 'add'">
            <el-col :span="24">
              <el-form-item label="标题" prop="title">
                <el-input v-model="createForm.title" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="pannelName == 'V1' || createDialogTitle == '新增上会反馈'">
            <el-col :span="24">
              <el-form-item label="上会原因" prop="reason">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="createForm.reason"
                ></el-input>
                <!-- <quill-editor
                  :options="editorOption"
                  @blur="editoronblur('createForm', 'reason')"
                  v-model="createForm.reason"
                  ref="r_Editor"
                >
                </quill-editor> -->
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="pannelName == 'V2'">
            <el-col :span="24">
              <el-form-item label="本次会议讨论内容" prop="discussionContent">
                <!-- <quill-editor
                  :options="editorOption"
                  @blur="editoronblur('createForm', 'discussionContent')"
                  v-model="createForm.discussionContent"
                  ref="c_Editor"
                >
                </quill-editor> -->
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="createForm.discussionContent"
                ></el-input>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="是否继续上会" prop="continueMeetingTag">
                <el-radio-group v-model="createForm.continueMeetingTag">
                  <el-radio :label="true">继续上会</el-radio>
                  <el-radio :label="false">转线下跟进</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="主负责人" prop="masterId">
                <el-select
                  v-model="createForm.masterId"
                  @change="masterTaskChange($event, 'createForm')"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in productUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="其他负责人" prop="otherPrincipalUserId">
                <el-select
                  v-model="createForm.otherPrincipalUserId"
                  filterable
                  clearable
                  multiple
                  style="width: 100%"
                  @change="selectIdChange($event, 'createForm')"
                >
                  <el-option
                    v-for="(items, inds) in allUserList"
                    :key="inds"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="申请人" prop="applicantId">
                <el-select
                  v-model="createForm.applicantId"
                  @change="changeCreateChange"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="items in productUserList"
                    :key="items.id"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="pannelName == 'V2'">
            <el-col :span="12">
              <el-form-item label="会议议程">
                <el-col :span="11">
                  <el-form-item prop="startTime">
                    <el-time-select
                      placeholder="起始时间"
                      v-if="createDialogVisible"
                      style="width:100%;"
                      value-format="HH:mm"
                      @change="changeAgendaStart"
                      v-model="startTime"
                      :picker-options="{
                        start: '08:00',
                        step: '00:05',
                        end: '23:59',

                        maxTime: endTime
                      }"
                    >
                    </el-time-select>
                  </el-form-item>
                </el-col>
                <el-col class="line" :span="2"><div style="text-align:center;">-</div></el-col>
                <el-col :span="11">
                  <el-form-item prop="endTime">
                    <el-time-select
                      placeholder="结束时间"
                      v-if="createDialogVisible"
                      style="width:100%;"
                      value-format="HH:mm"
                      @change="changeAgendaEnd"
                      v-model="endTime"
                      :picker-options="{
                        start: '08:00',
                        step: '00:05',
                        end: '23:59',
                        minTime: startTime
                      }"
                    >
                    </el-time-select>
                  </el-form-item>
                </el-col>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="" prop="agenda">
                <el-input type="hidden" v-model="createForm.agenda"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="备注" prop="remark">
                <el-input type="textarea" :rows="4" v-model="createForm.remark"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="createDialogTitle == '反馈回复'">
            <el-col :span="24">
              <el-form-item :label="pannelName == 'V2' ? 'V2修订记录' : 'V1修订记录'" prop="meetingFeedBackTaskLogs">
                <ul class="recordsUl" id="recordsUl">
                  <li v-for="(item, index) in createForm.meetingFeedBackTaskLogs" :key="index">
                    <div class="log_detail">
                      <div class="log_detail_footer" v-html="item.content"></div>
                    </div>
                  </li>
                </ul>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="createDialogVisibleChange">取 消</el-button>

        <el-button type="primary" size="small" @click="saveCreateForm('createForm')" class="submitReme">保存</el-button>
      </template>
    </CommonDialog>
    <!-- 上会任务 -->
    <CommonDialog
      :title="taskMissionTitle"
      width="90%"
      v-bind:dialogVisible="taskMissionVisible"
      v-if="taskMissionVisible"
      @on-change-dialogVisible="taskMissionVisibleChange"
      class="feedback"
      top="10vh"
    >
      <template #body>
        <el-form
          class="createForm"
          ref="taskMissionForm"
          label-position="left"
          :model="taskMissionForm"
          :rules="taskMissionFormRules"
          size="mini"
          label-width="135px"
        >
          <el-row :gutter="10" v-if="taskMissionType == 'add'">
            <el-col :span="12">
              <el-form-item label="任务ID" :prop="taskMissionType == 'edit' ? 'edit_taskNumber' : 'taskNumber'">
                <el-input
                  v-model.number="taskMissionForm.taskNumber"
                  clearable
                  @change="taskNumberChange"
                  :disabled="taskMissionType == 'edit'"
                ></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="创建人" prop="taskCreater">
                <el-input v-model="taskMissionForm.taskCreater" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionType == 'add'">
            <el-col :span="12">
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input v-model="taskMissionForm.feedBackNumber" disabled></el-input>
              </el-form-item>
            </el-col>

            <el-col :span="12">
              <el-form-item label="创建人" prop="createUser">
                <el-input v-model="taskMissionForm.createUser" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10" v-if="taskMissionType == 'add'">
            <el-col :span="12" :offset="12">
              <el-form-item label="创建天数" prop="createDay">
                <el-input v-model="taskMissionForm.createDay" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionType == 'add'">
            <el-col :span="24">
              <el-form-item label="所属产品" prop="productName">
                <el-input v-model="taskMissionForm.productName" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionType == 'add'">
            <el-col :span="24">
              <el-form-item label="标题" prop="title">
                <el-input v-model="taskMissionForm.title" disabled></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="!noTaskReason || !noFeedBackReason">
            <el-col :span="24">
              <el-form-item label="上会原因" prop="reason">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="taskMissionForm.reason"
                ></el-input>
                <!-- <quill-editor
                  :options="editorOption"
                  @blur="editoronblur('taskMissionForm', 'reason')"
                  v-model="taskMissionForm.reason"
                  ref="tasksEditor"
                >
                </quill-editor> -->
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="pannelName == 'V2'">
            <el-col :span="24">
              <el-form-item label="本次会议讨论内容" prop="discussionContent">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="taskMissionForm.discussionContent"
                ></el-input>

                <!-- <quill-editor
                  :options="editorOption"
                  @blur="editoronblur('taskMissionForm', 'discussionContent')"
                  v-model="taskMissionForm.discussionContent"
                  ref="c_Editor"
                >
                </quill-editor> -->
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="是否继续上会" prop="continueMeetingTag">
                <el-radio-group v-model="taskMissionForm.continueMeetingTag">
                  <el-radio :label="true">继续上会</el-radio>
                  <el-radio :label="false">转线下跟进</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="主负责人" prop="masterId">
                <el-select
                  v-model="taskMissionForm.masterId"
                  @change="masterTaskChange($event, 'taskMissionForm')"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in productUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <el-col :span="12" v-if="pannelName == 'V2'">
              <el-form-item label="会议议程">
                <el-row :gutter="0">
                  <el-col :span="11">
                    <el-form-item prop="startTime">
                      <el-time-select
                        placeholder="起始时间"
                        v-if="taskMissionVisible"
                        style="width:100%;"
                        value-format="HH:mm"
                        @change="changeAgendaStart2"
                        v-model="startTime2"
                        :picker-options="{
                          start: '08:00',
                          step: '00:05',
                          end: '23:59',

                          maxTime: endTime2
                        }"
                      >
                      </el-time-select>
                    </el-form-item>
                  </el-col>
                  <el-col class="line" :span="2"><div style="text-align:center;">-</div></el-col>
                  <el-col :span="11">
                    <el-form-item prop="endTime">
                      <el-time-select
                        placeholder="结束时间"
                        v-if="taskMissionVisible"
                        style="width:100%;"
                        value-format="HH:mm"
                        @change="changeAgendaEnd2"
                        v-model="endTime2"
                        :picker-options="{
                          start: '08:00',
                          step: '00:05',
                          end: '23:59',
                          minTime: startTime2
                        }"
                      >
                      </el-time-select>
                    </el-form-item>
                  </el-col>
                </el-row>
              </el-form-item>
            </el-col>

            <el-col :span="12">
              <el-form-item label="其他负责人" prop="otherPrincipalUserName">
                <el-select
                  v-model="taskMissionForm.otherPrincipalUserName"
                  filterable
                  clearable
                  multiple
                  @change="selectTaskIdChange"
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in allUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.name"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="申请人" prop="applicantId">
                <el-select
                  v-model="taskMissionForm.applicantId"
                  @change="changeTaskChange"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in productUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="备注" prop="remark">
                <el-input type="textarea" v-model="taskMissionForm.remark"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="taskMissionTitle == '任务回复'">
            <el-col :span="24">
              <el-form-item :label="pannelName == 'V2' ? 'V2修订记录' : 'V1修订记录'" prop="meetingFeedBackTaskLogs">
                <ul class="recordsUl" id="recordsUl">
                  <li v-for="(item, index) in taskMissionForm.meetingFeedBackTaskLogs" :key="index">
                    <div class="log_detail">
                      <div class="log_detail_footer" v-html="item.content"></div>
                    </div>
                  </li>
                </ul>
              </el-form-item>
            </el-col>
            <el-col :span="12" v-if="pannelName == 'V2'">
              <el-form-item label="" prop="agenda">
                <el-input type="hidden" v-model="taskMissionForm.agenda"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="taskMissionVisibleChange">取 消</el-button>
        <el-button type="primary" size="small" @click="saveTaskMissionForm('taskMissionForm')" class="submitReme"
          >保存</el-button
        >
      </template>
    </CommonDialog>
    <!-- v1 V2 回复 -->
    <CommonDialog
      :title="replyDialogTitle"
      width="90%"
      v-bind:dialogVisible="replyDialogVisible"
      v-if="replyDialogVisible"
      @on-change-dialogVisible="replyDialogVisibleChange"
      class="feedback"
      top="10vh"
    >
      <template #body>
        <el-form
          class="createForm"
          ref="replyForm"
          label-position="left"
          :model="replyForm"
          :rules="replyFormRules"
          size="mini"
          label-width="135px"
        >
          <el-row :gutter="10" v-if="noTaskReason || noFeedBackReason">
            <el-col :span="24">
              <el-form-item label="上会原因" prop="reason">
                <quill-editor
                  :options="editorOption"
                  @blur="editoronblur('replyForm', 'reason')"
                  v-model="replyForm.reason"
                  ref="re_Editor"
                >
                </quill-editor>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-else>
            <el-col :span="24">
              <el-form-item label="本周会议讨论内容" prop="discussionContent">
                <el-input
                  type="textarea"
                  :autosize="{ minRows: 8, maxRows: 16 }"
                  v-model="replyForm.discussionContent"
                ></el-input>
                <!-- <quill-editor
                  :options="editorOption"
                  @blur="editoronblur('replyForm', 'discussionContent')"
                  v-model="replyForm.discussionContent"
                  ref="discussEditor"
                >
                </quill-editor> -->
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <!-- <el-col :span="12">
              <el-form-item label="是否继续上会" prop="continueMeetingTag">
                <el-radio-group v-model="replyForm.continueMeetingTag">
                  <el-radio :label="true">是</el-radio>
                  <el-radio :label="false">否</el-radio>
                </el-radio-group>
              </el-form-item>
            </el-col> -->

            <el-col :span="12">
              <el-form-item label="主负责人" prop="masterId">
                <el-select
                  v-model="replyForm.masterId"
                  @change="masterTaskChange($event, 'replyForm')"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in productUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10">
            <el-col :span="12">
              <el-form-item label="其他负责人" prop="otherPrincipalUserId">
                <el-select
                  v-model="replyForm.otherPrincipalUserId"
                  filterable
                  clearable
                  multiple
                  style="width: 100%"
                  @change="selectIdChange($event, 'replyForm')"
                >
                  <el-option
                    v-for="(items, inds) in allUserList"
                    :key="inds"
                    :label="items.name"
                    :value="items.name"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
            <el-col :span="12">
              <el-form-item label="申请人" prop="applicantId">
                <el-select
                  v-model="replyForm.applicantId"
                  @change="changeReplyChange"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="items in productUserList"
                    :key="items.id"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
              </el-form-item>
            </el-col>
          </el-row>

          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="备注" prop="remark">
                <el-input type="textarea" :rows="4" v-model="replyForm.remark"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
          <el-row :gutter="10" v-if="pannelName == 'V2'">
            <el-col :span="24">
              <el-form-item label="V2修订记录" prop="meetingFeedBackTaskLogs">
                <ul class="recordsUl" id="recordsUl">
                  <li v-for="(item, index) in replyForm.meetingFeedBackTaskLogs" :key="index">
                    <div class="log_detail">
                      <div class="log_detail_footer" v-html="item.content"></div>
                    </div>
                  </li>
                </ul>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="replyDialogVisible = false">取 消</el-button>

        <el-button type="primary" size="small" @click="saveReplyForm('replyForm')" class="submitReme">保存</el-button>
      </template>
    </CommonDialog>
    <!-- V1 V2发布 -->
    <CommonDialog
      :title="versionTitle"
      width="90%"
      v-bind:dialogVisible="versionFormVisible"
      v-if="versionFormVisible"
      @on-change-dialogVisible="clearForm('versionForm')"
      class="versionForm"
      top="5vh"
    >
      <template #body>
        <el-form
          class="versionForm"
          ref="versionForm"
          label-position="top"
          :model="versionForm"
          :rules="versionFormRules"
          size="mini"
          label-width="80px"
        >
          <div>
            <el-col :span="24">
              <el-form-item label="主题" prop="title">
                <el-input v-model="versionForm.title"></el-input>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="收件人" prop="recipientUser">
                <multiselect
                  v-model="versionForm.recipientUser"
                  deselect-label="已选中"
                  track-by="email"
                  label="email"
                  placeholder="输入关键词或选择"
                  :options="otherPrincipalList"
                  :close-on-select="false"
                  :multiple="true"
                  :taggable="true"
                  tag-position="bottom"
                  tag-placeholder="回车添加下拉框"
                  selectLabel="回车选择"
                  selectGroupLabel="回车选择整个分组"
                  selectedLabel="已选择"
                  deselectLabel="回车取消选择"
                  deselectGroupLabel="回车取消选择"
                  :custom-label="nameWithLang"
                  searchable
                  @tag="addTag"
                >
                </multiselect>
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="抄送人" prop="recipients">
                <multiselect
                  v-model="versionForm.copyRecipients"
                  deselect-label="已选中"
                  track-by="email"
                  label="email"
                  placeholder="输入关键词或选择"
                  :options="otherPrincipalList"
                  :close-on-select="false"
                  :multiple="true"
                  :taggable="true"
                  tag-position="bottom"
                  tag-placeholder="回车添加下拉框"
                  selectLabel="回车选择"
                  selectGroupLabel="回车选择整个分组"
                  selectedLabel="已选择"
                  deselectLabel="回车取消选择"
                  deselectGroupLabel="回车取消选择"
                  :custom-label="nameWithLang"
                  searchable
                  @tag="addTag2"
                >
                </multiselect>
              </el-form-item>
            </el-col>

            <el-col :span="24">
              <el-form-item label="发布内容" prop="content">
                <vue-tinymce v-model="versionForm.content" :setting="setting" />
              </el-form-item>
            </el-col>
            <el-col :span="24">
              <el-form-item label="附加">
                <a class="filesHv" href="#">
                  <span class="el-icon-document"> {{ versionForm.appendixsName }}</span>
                </a>
              </el-form-item>
            </el-col>
          </div>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="clearForm('versionForm')">取 消</el-button>

        <el-button
          type="primary"
          v-loading.fullscreen.lock="fullscreenLoading"
          @click="saveVersionForm('versionForm')"
          size="small"
          >发 送</el-button
        >
      </template>
    </CommonDialog>
    <!-- 会议记录新增 -->
    <CommonDialog
      title="会议记录新增"
      width="23%"
      v-bind:dialogVisible="recordsFormVisible"
      @on-change-dialogVisible="clearForm('recordsForm')"
      class="recordsForm"
      top="10vh"
    >
      <template #body>
        <el-form
          class="recordsForm"
          ref="recordsForm"
          label-position="top"
          :model="recordsForm"
          :rules="recordsFormRules"
          size="mini"
          label-width="80px"
        >
          <el-row :gutter="10">
            <el-col :span="24">
              <el-form-item label="反馈ID" prop="feedBackNumber">
                <el-input @change="selectTaskChange" v-model.number="recordsForm.feedBackNumber"></el-input>
              </el-form-item>
            </el-col>
          </el-row>
        </el-form>
      </template>
      <template #dialog_footer>
        <el-button class="insertCancel" size="small" @click="clearForm('recordsForm')">取 消</el-button>

        <el-button type="primary" size="small" @click="saveRecordsForm('recordsForm')">保存</el-button>
      </template>
    </CommonDialog>
    <!-- 删除  -->
    <CommonDialog
      title="删除"
      width="20.1%"
      v-bind:dialogVisible="deleteDialogVisible"
      @on-change-dialogVisible="closeDelete"
      class="deleteDialog"
      top="10vh"
    >
      <template #body>
        确认删除该条数据吗?
      </template>
      <template #dialog_footer>
        <el-button class="insertCancel" @click="deleteDialogVisible = false" size="small">取 消</el-button>
        <el-button type="danger" @click="deleteConfirm" size="small">删除</el-button>
      </template>
    </CommonDialog>

    <!-- cellEditDialogRules -->
    <!-- 关闭弹出框 -->
    <CommonDialog
      title="关闭"
      width="75%"
      v-bind:dialogVisible="closeDialogVisible"
      @on-change-dialogVisible="closeChange"
      class="close"
      top="10vh"
    >
      <template #body>
        <el-form
          class="closeForm"
          :model="closeForm"
          ref="closeForm"
          :rules="closeFormRules"
          label-width="100"
          label-position="top"
        >
          <el-form-item label="关闭原因" class="closeReason" prop="reason">
            <el-select v-model="closeForm.reason" placeholder="关闭原因">
              <el-option
                v-for="(item, index) in closeReasonList"
                :key="index"
                :label="item.text"
                :value="item.id"
              ></el-option>
            </el-select>
          </el-form-item>

          <el-form-item label="备注" class="extra closeReason" prop="remark">
            <socialUpload :contentDefault="closeForm.remark" @getContent="getCloseRemark"></socialUpload>
          </el-form-item>
        </el-form>
      </template>

      <template #dialog_footer>
        <el-button size="small" @click="closeCancel">取 消</el-button>

        <el-button type="primary" @click="confirmCloseRow('closeForm')" size="small">确认</el-button>
      </template>
    </CommonDialog>
    <!-- V3子任务 -->
    <el-dialog
      title="任务"
      width="90%"
      top="5vh"
      :visible.sync="updateDialogShow"
      :close-on-click-modal="false"
      :before-close="cancelCreate"
      custom-class="regionDialog"
    >
      <el-button type="primary" @click="createRow" style="float: right; margin-bottom: 10px">创建</el-button>

      <el-table
        style="width: 100%"
        border
        max-height="550"
        :cell-style="{ textAlign: 'center', height: '60px' }"
        :header-cell-style="{
          textAlign: 'center',
          height: '50px',
          backgroundColor: '#FFFFFF'
        }"
        :data="gridData.data"
        stripe
      >
        <el-table-column property="ctag" label="C1/C2" min-width="200">
          <template slot-scope="scope">
            <el-select v-model="scope.row.ctag" v-if="scope.row.isEdit">
              <el-option label="C1" :value="0"></el-option>
              <el-option label="C2" :value="1"></el-option>
            </el-select>
            <span v-else>{{ scope.row.ctag | tagsFilter }}</span>
          </template>
        </el-table-column>
        <el-table-column property="title" label="主题" min-width="200">
          <template slot-scope="scope">
            <el-input
              v-if="scope.row.isEdit"
              type="textarea"
              :autosize="{ minRows: 6, maxRows: 20 }"
              placeholder="请输入主题"
              v-model="scope.row.title"
            >
            </el-input>
            <span v-else>{{ scope.row.title }}</span>
          </template>
        </el-table-column>
        <el-table-column property="nextPlan" label="下一步措施" min-width="200">
          <template slot-scope="scope">
            <el-input
              v-if="scope.row.isEdit"
              type="textarea"
              :autosize="{ minRows: 6, maxRows: 20 }"
              placeholder="请输入下一步措施"
              v-model="scope.row.nextPlan"
            >
            </el-input>
            <span v-else>{{ scope.row.nextPlan }}</span>
          </template>
        </el-table-column>
        <el-table-column property="currentProgress" label="当前进展" min-width="200">
          <template slot-scope="scope">
            <el-input
              v-if="scope.row.isEdit"
              type="textarea"
              :autosize="{ minRows: 6, maxRows: 20 }"
              placeholder="请输入当前进展"
              v-model="scope.row.currentProgress"
            >
            </el-input>
            <span v-else>{{ scope.row.currentProgress }}</span>
          </template>
        </el-table-column>
        <el-table-column property="responsibleUserName" label="责任人" min-width="200">
          <template slot-scope="scope">
            <el-select
              v-if="scope.row.isEdit"
              v-model="scope.row.responsibleUserId"
              filterable
              clearable
              style="width: 100%"
            >
              <el-option
                v-for="(items, ind) in recrodsUserList"
                :key="ind"
                :label="items.name"
                :value="items.id"
              ></el-option>
            </el-select>
            <span v-else>{{ scope.row.responsibleUserName }}</span>
          </template>
        </el-table-column>
        <el-table-column property="expectedCompletedDate" label="计划完成时间" min-width="250">
          <template slot-scope="scope">
            <el-date-picker
              v-if="scope.row.isEdit"
              v-model="scope.row.expectedCompletedDate"
              :picker-options="pickerOptions"
              type="date"
                value-format="yyyy-MM-dd"
              placeholder="选择日期时间"
            >
            </el-date-picker>
            <span v-else>{{ scope.row.expectedCompletedDate | formatTimer }}</span>
          </template>
        </el-table-column>
        <el-table-column property="continueMeeting" label="是否继续上会" min-width="200">
          <template slot-scope="scope">
            <el-select v-model="scope.row.continueMeeting" v-if="scope.row.isEdit" clearable>
              <el-option label="继续上会" :value="true"></el-option>
              <el-option label="转线下跟进" :value="false"></el-option>
            </el-select>
            <span v-else>{{ scope.row.continueMeeting | transTrue2False }}</span>
          </template>
        </el-table-column>
        <el-table-column property="masterId" min-width="200" label="主负责人"
          ><template slot-scope="scope">
            <el-select
              v-model="scope.row.masterId"
              v-if="scope.row.isEdit && scope.row.type == 'history'"
              filterable
              clearable
              style="width: 100%"
            >
              <el-option
                v-for="(items, ind) in recrodsUserList"
                :key="ind"
                :label="items.name"
                :value="items.id"
              ></el-option>
            </el-select>
            <span v-else>{{ scope.row.masterUser }}</span>
          </template>
        </el-table-column>
        <el-table-column property="otherPrincipaluserList" label="其他负责人" min-width="200">
          <template slot-scope="scope">
            <el-select
              v-model="scope.row.otherPrincipaluserList"
              v-if="scope.row.isEdit && scope.row.type == 'history'"
              filterable
              clearable
              multiple
              style="width: 100%"
            >
              <el-option
                v-for="(items, ind) in allUserList"
                :key="ind"
                :label="items.name"
                :value="items.id"
              ></el-option>
            </el-select>
            <span v-else>{{ scope.row.otherPrincipalUserNameString }}</span>
          </template>
        </el-table-column>

        <el-table-column label="操作" fixed="right" align="center" min-width="200">
          <template slot-scope="scope">
            <!-- <el-link :underline="false" v-has="'M1107049'" v-if="recordsName == '严重超期记录'">
                  <el-tooltip content="推送" placement="top" effect="light">
                    <el-button
                      style="margin-right:10px;"
                      type="text"
                      size="small"
                      @click="pushTask(scope.row, scope.$index, true)"
                      >推送</el-button
                    >
                  </el-tooltip>
                </el-link> -->
            <!-- <el-button
              size="mini"
              style="margin-right:10px;"
              v-if="!scope.row.isEdit && recordsName == '严重超期记录'"
              type="text"
              @click="pushTask(scope.row.meetingRecordId)"
              >推 送</el-button
            > -->
            <el-link :underline="false" v-has="'M1107049'" v-if="!scope.row.isEdit && recordsName == '严重超期记录'">
              <el-tooltip content="推送" placement="top" effect="light">
                <span @click="pushTask(scope.row.meetingRecordId)" class="option_export"></span>
                <!-- <el-button style="margin-right:10px;" type="text" size="small" @click="pushTask(scope.row.id)"
                      >推送</el-button
                    > -->
              </el-tooltip>
            </el-link>
            <el-tooltip :content="scope.row.isEdit ? '保存' : '编辑'" placement="top" effect="light">
              <span
                @click="gridDatatChange(scope.row, true)"
                :class="scope.row.isEdit ? 'option_confirm' : 'option_update'"
              ></span>
            </el-tooltip>
            <!-- <el-button style="margin-right:10px;" type="text" size="small" @click="gridDatatChange(scope.row, true)">{{
              scope.row.isEdit ? '保存' : '编辑'
            }}</el-button> -->
            <!-- <el-button size="mini" v-if="!scope.row.isEdit" type="text" @click="handleClose(scope.row)"
              >关 闭</el-button
            > -->
            <el-tooltip v-if="!scope.row.isEdit" content="关闭" placement="top" effect="light">
              <span class="option_close" @click="handleClose(scope.row)"></span>
            </el-tooltip>
            <el-link :underline="false" v-else>
              <el-tooltip content="取消" placement="top" effect="light">
                <span @click="gridDatatChange(scope.row, false)" class="option_reback"></span>
                <!-- <el-button type="text" size="small" @click="tableInputChange(scope.row, scope.$index, false)"
                      >取消</el-button
                    > -->
              </el-tooltip>
            </el-link>
            <!-- <el-button v-else type="text" size="small" @click="gridDatatChange(scope.row, false)">取消</el-button> -->
          </template>
        </el-table-column>
      </el-table>
      <div slot="footer" class="dialog-footer">
        <el-button type="primary" @click="cancelCreate">取 消</el-button>
      </div>
    </el-dialog>
    <el-dialog title="新建任务" :close-on-click-modal="false" :visible.sync="dialogFormVisible" :width="'90%'">
      <el-form
        ref="dataForm"
        :rules="dialogFormRules"
        :model="dialogFormTemp"
        label-position="left"
        label-width="120px"
        style="width: 100%;"
      >
        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="反馈ID" prop="feedBackNumber">
              <el-input
                placeholder="请输入反馈ID"
                @change="taskQuery"
                v-model.number="dialogFormTemp.feedBackNumber"
              ></el-input>
              <!-- <el-date-picker v-model="dialogFormTemp.feedBackNumber" type="datetime" placeholder="Please pick a date" /> -->
            </el-form-item>
          </el-col>

          <el-col :span="8">
            <el-form-item label="所属产品" prop="productName">
              <el-input placeholder="请输入反馈ID查询" v-model="dialogFormTemp.productName" disabled></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="24">
            <el-form-item label="主题" prop="title">
              <el-input type="textarea" placeholder="请输入主题" v-model="dialogFormTemp.title"></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="24">
            <el-form-item label="下一步措施" prop="nextPlan">
              <el-input
                type="textarea"
                placeholder="请输入下一步措施"
                :autosize="{ minRows: 8, maxRows: 16 }"
                v-model="dialogFormTemp.nextPlan"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <el-col :span="24">
            <el-form-item label="当前进展" prop="currentProgress">
              <el-input
                type="textarea"
                placeholder="请输入当前进展"
                :autosize="{ minRows: 8, maxRows: 16 }"
                v-model="dialogFormTemp.currentProgress"
              ></el-input>
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="10">
          <!-- <el-col :span="8">
              <el-form-item label="任务ID" prop="taskNumber">
                <el-input v-model="dialogFormTemp.taskNumber" disabled></el-input>
              </el-form-item>
            </el-col> -->
          <el-col :span="8">
            <el-form-item label="C1/C2" prop="ctag">
              <el-select v-model="dialogFormTemp.ctag" clearable placeholder="请选择任务标识">
                <el-option label="C1" :value="0"></el-option>
                <el-option label="C2" :value="1"></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="计划完成时间" prop="expectedCompletedDate">
              <el-date-picker
                v-model="dialogFormTemp.expectedCompletedDate"
                type="date"
                :picker-options="pickerOptions"
                  value-format="yyyy-MM-dd"
                style="width:100%;"
                placeholder="请选择计划完成时间"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="责任人" prop="responsibleUserId">
              <el-select
                v-model="dialogFormTemp.responsibleUserId"
                placeholder="请选择责任人"
                filterable
                clearable
                style="width: 100%"
              >
                <el-option
                  v-for="(items, ind) in recrodsUserList"
                  :key="ind"
                  :label="items.name"
                  :value="items.id"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>

        <el-row :gutter="10">
          <el-col :span="8">
            <el-form-item label="是否继续上会" prop="continueMeetingTag">
              <el-radio-group v-model="dialogFormTemp.continueMeetingTag">
                <el-radio :label="true">继续上会</el-radio>
                <el-radio :label="false">转线下跟进</el-radio>
              </el-radio-group>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="主负责人" prop="masterId">
              <el-select
                v-model="dialogFormTemp.masterId"
                placeholder="请选择主负责人"
                filterable
                clearable
                style="width: 100%"
              >
                <el-option
                  v-for="(items, ind) in recrodsUserList"
                  :key="ind"
                  :label="items.name"
                  :value="items.id"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="其他负责人" prop="otherPrincipalUserId">
              <el-select
                v-model="dialogFormTemp.otherPrincipalUserId"
                filterable
                clearable
                multiple
                placeholder="请选择其他负责人"
                style="width: 100%"
              >
                <el-option
                  v-for="(items, ind) in allUserList"
                  :key="ind"
                  :label="items.name"
                  :value="items.id"
                ></el-option>
              </el-select>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogFormVisible = false">
          取 消
        </el-button>
        <el-button type="primary" @click="createData()">
          保 存
        </el-button>
      </div>
    </el-dialog>
    <div class="selectCondition">
      <el-tabs v-model="pannelName" @tab-click="handleClick">
        <el-tab-pane label="V1" name="V1"></el-tab-pane>
        <el-tab-pane label="V2" name="V2"></el-tab-pane>
        <el-tab-pane label="会议记录" name="third"></el-tab-pane>
      </el-tabs>
      <div class="aboutOptions">
        <el-button type="primary" size="small" @click="goback">返回</el-button>
        <el-button type="primary" v-show="pannelName == 'third'" v-has="'M1111023'" size="small" @click="synchronous"
          >同步</el-button
        >
        <el-button type="primary" size="small" v-show="pannelName == 'V1'" v-has="'M1111002'" @click="exportTable"
          >导出</el-button
        >
        <el-button type="primary" size="small" v-show="pannelName == 'V2'" v-has="'M1111013'" @click="exportTable"
          >导出</el-button
        >
        <el-button type="primary" size="small" v-show="pannelName == 'third'" v-has="'M1111022'" @click="exportRecord"
          >导出</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName == 'V1'"
          v-has="'M1111003'"
          @click="versionOneClick('V1')"
          >V1邮件</el-button
        >
        <el-button
          type="primary"
          size="small"
          v-show="pannelName == 'V2'"
          v-has="'M1111014'"
          @click="versionOneClick('V2')"
          >V2邮件</el-button
        >
        <!-- <el-button type="primary" v-show="pannelName == 'V1'" v-has="'M1111004'" @click="publishClick" size="small"
          >发布</el-button
        > -->
      </div>
    </div>

    <div class="tableContainer">
      <el-card class="TopDetailTable" v-show="pannelName == 'V1' || pannelName == 'V2'">
        <el-row type="flex" class="row-bg" justify="space-between" style="align-items: center">
          <el-col>
            <span class="titleSpan">超期反馈</span>
          </el-col>
          <el-col class="reserve_row">
            <el-button
              type="primary"
              size="small"
              v-if="pannelName == 'V2'"
              v-has="'M1111015'"
              style="margin-right:10px;"
              @click="addCreateFeedBack('V2', 'add')"
              >新增反馈</el-button
            >
            <el-button
              type="primary"
              size="small"
              v-if="pannelName == 'V1'"
              v-has="'M1111005'"
              style="margin-right:10px;"
              @click="addCreateFeedBack('V1', 'add')"
              >新增反馈</el-button
            >
            <!-- <popovers @selchange="selchange" :min="3" :placement="'bottom-start'" :columnSelecteds="v1_top_colSelect" :columnHeaders="overDueFeedBackData1.columns" /> -->
            <!-- <popovers :popoverOption="v1_top_colOptions" @selchange="selchange" :tableColumnsData="overDueFeedBackData1" :popoverSelect="v1_top_colSelect"  :show="pannelName == 'V1'"/> -->
            <el-popover placement="bottom-start" v-show="pannelName == 'V1'" width="150" trigger="click">
              <el-checkbox-group v-model="v1_top_colOptions" :min="3">
                <el-checkbox v-for="item in v1_top_colSelect" :label="item" :key="item"></el-checkbox>
              </el-checkbox-group>
              <el-button slot="reference" type="primary" size="small">字段管理</el-button>
            </el-popover>
            <el-popover placement="bottom-start" v-show="pannelName == 'V2'" width="150" trigger="click">
              <el-checkbox-group v-model="v2_top_colOptions" :min="3">
                <el-checkbox v-for="item in v2_top_colSelect" :label="item" :key="item"></el-checkbox>
              </el-checkbox-group>
              <el-button slot="reference" type="primary" size="small">字段管理</el-button>
            </el-popover>
          </el-col>
        </el-row>

        <!-- V1部分Table 开始 -->
        <el-table
          v-show="pannelName == 'V1'"
          :data="overDueFeedBackData1.data"
          v-loading="overDueFeedBackDataloading"
          border
          max-height="600"
          style="width: 100%"
          ref="overDueFeedBackRef1"
          :cell-style="{ textAlign: 'center', height: '60px' }"
          :header-cell-style="{
            textAlign: 'center',
            height: '50px',
            backgroundColor: '#FFFFFF'
          }"
          :row-class-name="tableRowClassName"
        >
          <template v-for="(v, i) in overDueFeedBackData1.columns">
            <template>
              <el-table-column :prop="v.field" :label="v.title" :key="i" v-if="v.istrue" :min-width="v.width">
                <template slot-scope="scope">
                  <span v-if="v.title == '是否继续上会'">{{ scope.row[v.field] | transTrue2False }}</span>
                  <span v-else-if="v.title == '反馈ID'" @click="tofeedBack(scope.row.feedBackId)" class="link-type"
                    >{{ scope.row[v.field] }}
                  </span>
                  <span v-else-if="v.title == '任务ID'" @click="totaskDetail(scope.row.taskNumber)" class="link-type">{{
                    scope.row.taskNumber == 0 ? ' ' : scope.row.taskNumber
                  }}</span>
                  <!-- <span v-else-if="v.title == '上会原因'"><div v-html="scope.row.reason"></div></span>
                  <span v-else-if="v.title == '本周会议讨论内容'"
                    ><div v-html="scope.row.discussionContent"></div
                  ></span> -->
                  <span v-else>{{ scope.row[v.field] }}</span>
                </template>
              </el-table-column>
            </template>
          </template>
          <el-table-column label="操作" width="208" fixed="right">
            <template slot-scope="scope">
              <!-- <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111006'">
                <el-tooltip content="回复" v-if="scope.row.meetingVersion == 0" placement="top" effect="light">
                  <span
                    class="el-icon-position"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="replyRow(scope.row, '1')"
                  >
                  </span>
                </el-tooltip>
              </el-link> -->
              <el-link :underline="false" v-has="pannelName == 'V1' ? 'M1111006' : 'M1111017'">
                <el-tooltip effect="light" content="回复" placement="top">
                  <span @click="editRow(scope.row, '3')" class="option_export"></span>
                </el-tooltip>
                <!-- <el-tooltip content="回复" placement="top" effect="light">
                  <span
                    class="el-icon-position"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="editRow(scope.row, '3')"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
              <el-link
                :underline="false"
                v-if="!scope.row.pushTag"
                v-has="pannelName == 'V1' ? 'M1111007' : 'M1111016'"
              >
                <el-tooltip effect="light" content="删除" placement="top">
                  <span @click="deleteRow(scope.row)" class="option_delete"></span>
                </el-tooltip>
                <!-- <el-tooltip content="删除" placement="top" effect="light">
                  <span
                    class="el-icon-delete"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="deleteRow(scope.row)"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
            </template>
          </el-table-column>
        </el-table>
        <!-- V1部分Table 结束 -->

        <!-- V2部分Table 开始 -->
        <el-table
          v-show="pannelName == 'V2'"
          :data="overDueFeedBackData2.data"
          v-loading="feedbackTaskDataloading"
          style="width: 100%"
          ref="overDueFeedBackRef1"
          border
          :cell-style="{ textAlign: 'center', height: '60px' }"
          :header-cell-style="{
            textAlign: 'center',
            height: '50px',
            backgroundColor: '#FFFFFF'
          }"
        >
          <template v-for="(v, i) in overDueFeedBackData2.columns">
            <template>
              <el-table-column :prop="v.field" :label="v.title" :key="i" v-if="v.istrue" :min-width="v.width">
                <template slot-scope="scope">
                  <span v-if="v.title == '是否继续上会'">{{ scope.row[v.field] | transTrue2False }}</span>
                  <span v-else-if="v.title == '反馈ID'" @click="tofeedBack(scope.row.feedBackId)" class="link-type"
                    >{{ scope.row[v.field] }}
                  </span>
                  <span v-else-if="v.title == '任务ID'"  @click="totaskDetail(scope.row.taskNumber)" class="link-type">{{
                    scope.row.taskNumber == 0 ? ' ' : scope.row.taskNumber
                  }}</span>
                  <!-- <span v-else-if="v.title == '上会原因'"><div v-html="scope.row.reason"></div></span>
                  <span v-else-if="v.title == '本周会议讨论内容'"
                    ><div v-html="scope.row.discussionContent"></div
                  ></span> -->
                  <span v-else>{{ scope.row[v.field] }}</span>
                </template>
              </el-table-column>
            </template>
          </template>
          <el-table-column label="操作" width="208" fixed="right">
            <template slot-scope="scope">
              <el-link :underline="false" v-has="'M1111017'">
                <el-tooltip effect="light" content="回复" placement="top">
                  <span @click="editRow(scope.row, '3')" class="option_export"></span>
                </el-tooltip>
                <!-- <el-tooltip content="回复" placement="top" effect="light">
                  <span
                    class="el-icon-position"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="editRow(scope.row, '3')"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
              <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111016'">
                <el-tooltip effect="light" content="删除" placement="top">
                  <span @click="deleteRow(scope.row)" class="option_delete"></span>
                </el-tooltip>
                <!-- <el-tooltip content="删除" placement="top" effect="light">
                  <span
                    class="el-icon-delete"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="deleteRow(scope.row)"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
            </template>
          </el-table-column>
        </el-table>

        <!-- V2部分Table 结束 -->
      </el-card>
      <el-card class="BottomDetailTable" v-show="pannelName == 'V1' || pannelName == 'V2'">
        <el-row type="flex" class="row-bg" justify="space-between" style="align-items: center; margin-bottom: 10px">
          <el-col>
            <span class="titleSpan">反馈任务</span>
          </el-col>
          <el-col class="reserve_row">
            <el-button
              type="primary"
              size="small"
              v-show="pannelName == 'V2'"
              v-has="'M1111018'"
              @click="addtaskMission('V2', 'add')"
              >新增任务</el-button
            >
            <el-button
              type="primary"
              size="small"
              v-show="pannelName == 'V1'"
              v-has="'M1111008'"
              @click="addtaskMission('V1', 'add')"
              >新增任务</el-button
            >
            <el-popover placement="bottom-start" v-show="pannelName == 'V1'" width="150" trigger="click">
              <el-checkbox-group v-model="v1_bottom_colOptions" :min="3">
                <el-checkbox v-for="item in v1_bottom_colSelect" :label="item" :key="item"></el-checkbox>
              </el-checkbox-group>
              <el-button slot="reference" type="primary" size="small" class="export_btn">字段管理</el-button>
            </el-popover>
            <el-popover placement="bottom-start" v-show="pannelName == 'V2'" width="150" trigger="click">
              <el-checkbox-group v-model="v2_bottom_colOptions" :min="3">
                <el-checkbox v-for="item in v2_bottom_colSelect" :label="item" :key="item"></el-checkbox>
              </el-checkbox-group>
              <el-button slot="reference" type="primary" size="small" class="export_btn">字段管理</el-button>
            </el-popover>
          </el-col>
        </el-row>
        <el-table
          v-show="pannelName == 'V1'"
          :data="feedbackTaskData1.data"
          v-loading="overDueFeedBackDataloading"
          style="width: 100%"
          ref="feedbackTaskDataRef1"
          border
          max-height="600"
          :cell-style="{ textAlign: 'center', height: '60px' }"
          :header-cell-style="{
            textAlign: 'center',
            height: '50px',
            backgroundColor: '#FFFFFF'
          }"
        >
          <template v-for="(v, i) in feedbackTaskData1.columns">
            <template>
              <el-table-column :prop="v.field" :label="v.title" :key="i" v-if="v.istrue" :min-width="v.width">
                <template slot-scope="scope">
                  <!-- <span v-if="v.title=='是否继续上会'" >{{ scope.row[v.field] | transTrue2False }}</span> -->
                  <span v-if="v.title == '任务ID'" @click="totaskDetail(scope.row.taskNumber)" class="link-type">{{ scope.row.taskNumber == 0 ? ' ' : scope.row.taskNumber }}</span>
                  <span v-else-if="v.title == '反馈ID'" @click="tofeedBack(scope.row.feedBackId)" class="link-type"
                    >{{ scope.row[v.field] }}
                  </span>
                  <!-- <span v-else-if="v.title == '上会原因'"><div v-html="scope.row.reason"></div></span>
                  <span v-else-if="v.title == '本周会议讨论内容'"
                    ><div v-html="scope.row.discussionContent"></div
                  ></span> -->
                  <span v-else>{{ scope.row[v.field] }}</span>
                </template>
              </el-table-column>
            </template>
          </template>

          <el-table-column label="操作" width="208" fixed="right">
            <template slot-scope="scope">
              <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111009'">
                <el-tooltip effect="light" content="回复" placement="top">
                  <span @click="editRow(scope.row, '2')" class="option_export"></span>
                </el-tooltip>
                <!-- <el-tooltip content="回复" placement="top" effect="light">
                  <span
                    class="el-icon-position"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="editRow(scope.row, '2')"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
              <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111010'">
                <!-- <el-tooltip content="删除" placement="top" effect="light">
                  <span
                    class="el-icon-delete"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="deleteRow(scope.row)"
                  >
                  </span>
                </el-tooltip> -->
                <el-tooltip effect="light" content="删除" placement="top">
                  <span @click="deleteRow(scope.row)" class="option_delete"></span>
                </el-tooltip>
              </el-link>
            </template>
          </el-table-column>
        </el-table>
        <el-table
          v-show="pannelName == 'V2'"
          :data="feedbackTaskData2.data"
          v-loading="feedbackTaskDataloading"
          style="width: 100%"
          ref="feedbackTaskDataRef2"
          border
          max-height="600"
          :cell-style="{ textAlign: 'center', height: '60px' }"
          :header-cell-style="{
            textAlign: 'center',
            height: '50px',
            backgroundColor: '#FFFFFF'
          }"
        >
          <template v-for="(v, i) in feedbackTaskData2.columns">
            <template>
              <el-table-column :prop="v.field" :label="v.title" :key="i" v-if="v.istrue" :min-width="v.width">
                <template slot-scope="scope">
                  <span v-if="v.title == '是否继续上会'">{{ scope.row[v.field] | transTrue2False }}</span>
                  <span v-else-if="v.title == '反馈ID'" @click="tofeedBack(scope.row.feedBackId)" class="link-type"
                    >{{ scope.row[v.field] }}
                  </span>
                  <span v-else-if="v.title == '任务ID'" @click="totaskDetail(scope.row.taskNumber)" class="link-type">{{
                    scope.row.taskNumber == 0 ? ' ' : scope.row.taskNumber
                  }}</span>
                  <!-- <span v-else-if="v.title == '上会原因'"><div v-html="scope.row.reason"></div></span>
                  <span v-else-if="v.title == '本周会议讨论内容'"
                    ><div v-html="scope.row.discussionContent"></div
                  ></span> -->
                  <span v-else>{{ scope.row[v.field] }}</span>
                </template>
              </el-table-column>
            </template>
          </template>
          <el-table-column label="操作" width="208" fixed="right">
            <template slot-scope="scope">
              <el-link :underline="false" v-has="'M1111020'">
                <el-tooltip effect="light" content="回复" placement="top">
                  <span @click="editRow(scope.row, '3')" class="option_export"></span>
                </el-tooltip>
                <!-- <el-tooltip content="回复" placement="top" effect="light">
                  <span
                    class="el-icon-position"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="editRow(scope.row, '3')"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
              <el-link :underline="false" v-if="!scope.row.pushTag" v-has="'M1111019'">
                <el-tooltip effect="light" content="删除" placement="top">
                  <span @click="deleteRow(scope.row)" class="option_delete"></span>
                </el-tooltip>
                <!-- <el-tooltip content="删除" placement="top" effect="light">
                  <span
                    class="el-icon-delete"
                    style="cursor: pointer;font-size:17px;margin-right:10px;"
                    @click="deleteRow(scope.row)"
                  >
                  </span>
                </el-tooltip> -->
              </el-link>
            </template>
          </el-table-column>
        </el-table>
      </el-card>

      <el-card class="meetingRecordTable" v-show="pannelName == 'third'">
        <el-row class="tabsName">
          <el-tabs v-model="recordsName" @tab-click="handleRecordClick">
            <el-tab-pane label="超期记录" name="超期记录"> </el-tab-pane>
            <el-tab-pane label="严重超期记录" name="严重超期记录"></el-tab-pane>
          </el-tabs>
        </el-row>
        <el-radio-group v-model="recordType" @change="handlerecordTypeClick">
          <el-radio-button label="1">反馈</el-radio-button>
          <el-radio-button label="2">任务</el-radio-button>
        </el-radio-group>
        <el-row type="flex" class="row-bg" justify="space-between" style="align-items: center">
          <el-col :span="20">
            <span class="titleSpan"></span>
          </el-col>
          <el-col :span="4" v-show="recordType == '1'">
            <div class="flexEnd">
              <el-button
                @click="addMasterUser"
                v-if="pannelName == 'third'"
                type="primary"
                v-has="recordsName == '超期记录' ? 'M1111024' : 'M1111031'"
                size="small"
                >新增反馈</el-button
              >
              <el-popover placement="bottom-start" width="200" trigger="click">
                <el-checkbox-group v-model="colOptions" :min="3" class="checkGroup">
                  <el-checkbox v-for="item in colSelect" :label="item" :key="item" class="checkItem"></el-checkbox>
                </el-checkbox-group>
                <el-button slot="reference" type="primary" size="small" class="export_btn">字段管理</el-button>
              </el-popover>
            </div>
          </el-col>
          <el-col :span="4" v-show="recordType == '2'">
            <div class="flexEnd">
              <el-button
                @click="addTasks"
                v-if="pannelName == 'third'"
                type="primary"
                v-has="recordsName == '超期记录' ? 'M1111028' : 'M1111036'"
                size="small"
                >新增任务</el-button
              >
              <el-popover placement="bottom-start" width="200" trigger="click">
                <el-checkbox-group v-model="taskOpt" :min="3">
                  <el-checkbox v-for="item in taskSlet" :label="item" :key="item" class="checkItem"></el-checkbox>
                </el-checkbox-group>
                <el-button slot="reference" type="primary" size="small" class="export_btn">字段管理</el-button>
              </el-popover>
            </div>
          </el-col>
        </el-row>
        <div v-show="recordType == '1'">
          <el-table
            ref="multipleTable"
            v-loading="recordTableDataLoading"
            :span-method="objectSpanMethod"
            :data="recordTableData.data"
            tooltip-effect="dark"
            max-height="660"
            :cell-style="{ textAlign: 'center', height: '60px' }"
            :header-cell-style="{
              textAlign: 'center',
              height: '50px',
              backgroundColor: '#FFFFFF'
            }"
            border
            style="width: 100%"
            highlight-current-row
          >
            <template v-for="(v, i) in recordTableData.columns">
              <template v-if="i == 0">
                <el-table-column label="反馈ID" width="80" v-if="v.istrue" :key="i">
                  <template slot-scope="scope">
                    <span @click="tofeedBack(scope.row.feedBackId)" class="link-type"
                      >{{ scope.row.feedBackNumber }}
                    </span>
                  </template>
                </el-table-column>
              </template>
              <template v-else>
                <el-table-column :prop="v.field" :label="v.title" :key="i" v-if="v.istrue" :width="v.width">
                  <template slot-scope="scope">
                    <span v-if="scope.row.isSet && v.title == '本周会议讨论内容'">
                      <el-input
                        type="textarea"
                        :autosize="{ minRows: 12, maxRows: 12 }"
                        size="mini"
                        placeholder="请输入本周会议讨论内容"
                        v-model="recordTableData.sel[v.field]"
                      ></el-input>
                    </span>
                    <span v-else-if="v.title == '版本是否发布'">
                      {{ scope.row[v.field] | transTrue2False2 }}
                    </span>
                    <span v-else-if="scope.row.isSet && v.title == '当前进展'">
                      <el-input
                        type="textarea"
                        :autosize="{ minRows: 12, maxRows: 12 }"
                        size="mini"
                        placeholder="请输入当前进展"
                        v-model="recordTableData.sel[v.field]"
                      ></el-input>
                    </span>
                    <span v-else-if="scope.row.isSet && v.title == '下一步措施'">
                      <el-input
                        type="textarea"
                        :autosize="{ minRows: 12, maxRows: 12 }"
                        size="mini"
                        placeholder="请输入下一步措施"
                        v-model="recordTableData.sel[v.field]"
                      ></el-input>
                    </span>
                    <span v-else-if="v.title == '是否继续上会'">
                      <el-select v-if="scope.row.isSet" v-model="recordTableData.sel[v.field]" clearable>
                        <el-option label="继续上会" :value="true"></el-option>
                        <el-option label="转线下跟进" :value="false"></el-option>
                      </el-select>
                      <span v-else>{{ scope.row.continueMeeting | transTrue2False }}</span>
                      <!-- <el-input
                      type="textarea"
                        :autosize="{ minRows: 12, maxRows: 12 }"

                      size="mini"
                      placeholder="请输入下一步措施"
                      v-model="recordTableData.sel[v.field]"
                    ></el-input> -->
                    </span>
                    <span v-else-if="scope.row.isSet && v.title == '主负责人'">
                      <el-select v-model="recordTableData.sel[v.field]" filterable clearable style="width: 100%">
                        <el-option
                          v-for="(items, ind) in recrodsUserList"
                          :key="ind"
                          :label="items.name"
                          :value="items.id"
                        ></el-option>
                      </el-select>
                    </span>
                    <span v-else-if="!scope.row.isSet && v.title == '主负责人'">
                      <span>{{ scope.row.masterUser }}</span>
                    </span>
                    <span v-else-if="v.title == '反馈时间'">
                      <span>{{ scope.row.feedBackCreateAt | formatTimer }}</span>
                    </span>
                    <span v-else-if="scope.row.isSet && v.title == '其他负责人'">
                      <el-select
                        v-model="recordTableData.sel[v.field]"
                        filterable
                        multiple
                        clearable
                        style="width: 100%"
                      >
                        <el-option
                          v-for="(items, ind) in allUserList"
                          :key="ind"
                          :label="items.name"
                          :value="items.id"
                        ></el-option>
                      </el-select>
                    </span>
                    <span v-else-if="!scope.row.isSet && v.title == '其他负责人'">{{
                      scope.row.otherPrincipalUserName
                    }}</span>

                    <span v-else>{{ scope.row[v.field] | transTrue2False }}</span>
                  </template>
                </el-table-column>
              </template>
            </template>

            <el-table-column label="操作" width="200" fixed="right">
              <template slot-scope="scope">
                <el-link :underline="false" v-has="'M1111032'" v-if="recordsName == '严重超期记录'">
                  <el-tooltip content="推送" placement="top" effect="light">
                    <span @click="pushTask(scope.row.id)" class="option_export"></span>
                    <!-- <el-button style="margin-right:10px;" type="text" size="small" @click="pushTask(scope.row.id)"
                      >推送</el-button
                    > -->
                  </el-tooltip>
                </el-link>
                <el-link :underline="false" v-has="recordsName == '严重超期记录' ? 'M1111033' : 'M1111025'">
                  <el-tooltip content="任务" placement="top" effect="light">
                    <!-- option_task -->
                    <span @click="checkOutRow(scope.row, scope.$index, true)" class="option_task"></span>
                    <!-- <el-button
                      style="margin-right:10px;"
                      type="text"
                      size="small"
                      @click="checkOutRow(scope.row, scope.$index, true)"
                      >任务</el-button
                    > -->
                  </el-tooltip>
                </el-link>
                <el-link :underline="false" v-has="recordsName == '严重超期记录' ? 'M1111034' : 'M1111026'">
                  <el-tooltip :content="scope.row.isSet ? '保存' : '编辑'" placement="top" effect="light">
                    <span
                      @click="tableInputChange(scope.row, scope.$index, true)"
                      :class="scope.row.isSet ? 'option_confirm' : 'option_update'"
                    ></span>
                    <!-- <el-button
                      style="margin-right:10px;"
                      type="text"
                      size="small"
                      @click="tableInputChange(scope.row, scope.$index, true)"
                      >{{ scope.row.isSet ? '保存' : '编辑' }}</el-button
                    > -->
                  </el-tooltip>
                </el-link>
                <el-link
                  :underline="false"
                  v-if="!scope.row.isSet"
                  v-has="recordsName == '严重超期记录' ? 'M1111035' : 'M1111027'"
                >
                  <el-tooltip content="删除" placement="top" effect="light">
                    <!-- <el-button type="text" size="small" @click="tableRowDelete(scope.row, scope.$index, true)"
                      >删除</el-button
                    > -->
                    <span @click="tableRowDelete(scope.row, scope.$index, true)" class="option_delete"></span>
                  </el-tooltip>
                </el-link>
                <el-link :underline="false" v-else>
                  <el-tooltip content="取消" placement="top" effect="light">
                    <span @click="tableInputChange(scope.row, scope.$index, false)" class="option_close"></span>
                    <!-- <el-button type="text" size="small" @click="tableInputChange(scope.row, scope.$index, false)"
                      >取消</el-button
                    > -->
                  </el-tooltip>
                </el-link>
              </template>
            </el-table-column>
          </el-table>
        </div>
        <div v-show="recordType == '2'">
          <el-table
            style="width: 100%"
            border
            max-height="550"
            ref="gridTaskDataTable"
            v-loading="recordTableDataLoading"
            :cell-style="{ textAlign: 'center', height: '60px' }"
            :header-cell-style="{
              textAlign: 'center',
              height: '50px',
              backgroundColor: '#FFFFFF'
            }"
            :data="gridTaskData.data"
            stripe
          >
            <el-table-column
              property="feedBackNumber"
              v-if="gridTaskData.columns[0].istrue"
              label="反馈ID"
              min-width="200"
            >
            <template slot-scope="scope">
                    <span @click="tofeedBack(scope.row.feedBackId)" class="link-type"
                      >{{ scope.row.feedBackNumber }}
                    </span>
                  </template>
            </el-table-column>
            <el-table-column
              property="productName"
              v-if="gridTaskData.columns[1].istrue"
              label="所属产品"
              min-width="200"
            >
            </el-table-column>
            <el-table-column property="taskNumber" v-if="gridTaskData.columns[2].istrue" label="任务ID" min-width="200">
                <template slot-scope="scope">
                    <span @click="totaskDetail(scope.row.taskNumber)" class="link-type"
                      >{{ scope.row.feedBackNumber }}
                    </span>
                  </template>
            </el-table-column>
            <el-table-column property="taskCTag" v-if="gridTaskData.columns[3].istrue" label="C1/C2" min-width="200">
              <template slot-scope="scope">
                <el-select v-model="scope.row.taskCTag" v-if="scope.row.isEdit">
                  <el-option label="C1" :value="0"></el-option>
                  <el-option label="C2" :value="1"></el-option>
                </el-select>
                <span v-else>{{ scope.row.taskCTag | tagsFilter }}</span>
              </template>
            </el-table-column>
            <el-table-column property="taskTitle" v-if="gridTaskData.columns[4].istrue" label="主题" min-width="200">
              <template slot-scope="scope">
                <el-input
                  v-if="scope.row.isEdit"
                  type="textarea"
                  :autosize="{ minRows: 6, maxRows: 20 }"
                  placeholder="请输入主题"
                  v-model="scope.row.taskTitle"
                >
                </el-input>
                <span v-else>{{ scope.row.taskTitle }}</span>
              </template>
            </el-table-column>
            <el-table-column
              property="nextPlan"
              v-if="gridTaskData.columns[5].istrue"
              label="下一步措施"
              min-width="200"
            >
              <template slot-scope="scope">
                <el-input
                  v-if="scope.row.isEdit"
                  type="textarea"
                  :autosize="{ minRows: 6, maxRows: 20 }"
                  placeholder="请输入下一步措施"
                  v-model="scope.row.nextPlan"
                >
                </el-input>
                <span v-else>{{ scope.row.nextPlan }}</span>
              </template>
            </el-table-column>
            <el-table-column
              property="currentProgress"
              v-if="gridTaskData.columns[6].istrue"
              label="当前进展"
              min-width="200"
            >
              <template slot-scope="scope">
                <el-input
                  v-if="scope.row.isEdit"
                  type="textarea"
                  :autosize="{ minRows: 6, maxRows: 20 }"
                  placeholder="请输入当前进展"
                  v-model="scope.row.currentProgress"
                >
                </el-input>
                <span v-else>{{ scope.row.currentProgress }}</span>
              </template>
            </el-table-column>
            <el-table-column
              property="taskResponsibleUserName"
              v-if="gridTaskData.columns[7].istrue"
              label="责任人"
              min-width="200"
            >
              <template slot-scope="scope">
                <el-select
                  v-if="scope.row.isEdit"
                  v-model="scope.row.taskResponsibleUserId"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in recrodsUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
                <span v-else>{{ scope.row.taskResponsibleUserName }}</span>
              </template>
            </el-table-column>
            <el-table-column
              property="taskExpectedCompletedDate"
              v-if="gridTaskData.columns[8].istrue"
              label="计划完成时间"
              min-width="250"
            >
              <template slot-scope="scope">
                <el-date-picker
                  v-if="scope.row.isEdit"
                  v-model="scope.row.taskExpectedCompletedDate"
                  :picker-options="pickerOptions"
                  type="date"
                  value-format="yyyy-MM-dd"
                  placeholder="选择日期时间"
                >
                </el-date-picker>
                <span v-else>{{ scope.row.taskExpectedCompletedDate | formatTimer }}</span>
              </template>
            </el-table-column>
            <el-table-column
              property="continueMeeting"
              v-if="gridTaskData.columns[9].istrue"
              label="是否继续上会"
              min-width="200"
            >
              <template slot-scope="scope">
                <el-select v-model="scope.row.continueMeeting" v-if="scope.row.isEdit" clearable>
                  <el-option label="继续上会" :value="true"></el-option>
                  <el-option label="转线下跟进" :value="false"></el-option>
                </el-select>
                <span v-else>{{ scope.row.continueMeeting | transTrue2False }}</span>
              </template>
            </el-table-column>
            <el-table-column property="masterId" v-if="gridTaskData.columns[10].istrue" min-width="200" label="主负责人"
              ><template slot-scope="scope">
                <el-select
                  v-model="scope.row.masterId"
                  v-if="scope.row.isEdit"
                  filterable
                  clearable
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in recrodsUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
                <span v-else>{{ scope.row.masterUser }}</span>
              </template>
            </el-table-column>
            <el-table-column
              property="otherPrincipaluserIdList"
              v-if="gridTaskData.columns[11].istrue"
              label="其他负责人"
              min-width="200"
            >
              <template slot-scope="scope">
                <el-select
                  v-model="scope.row.otherPrincipaluserIdList"
                  v-if="scope.row.isEdit"
                  filterable
                  clearable
                  multiple
                  style="width: 100%"
                >
                  <el-option
                    v-for="(items, ind) in allUserList"
                    :key="ind"
                    :label="items.name"
                    :value="items.id"
                  ></el-option>
                </el-select>
                <span v-else>{{ scope.row.otherPrincipalUserName }}</span>
              </template>
            </el-table-column>

            <el-table-column label="操作" fixed="right" align="center" min-width="200">
              <template slot-scope="scope">
                <!-- <el-link :underline="false" v-has="'M1107049'" v-if="recordsName == '严重超期记录'">
                  <el-tooltip content="推送" placement="top" effect="light">
                    <el-button
                      style="margin-right:10px;"
                      type="text"
                      size="small"
                      @click="pushTask(scope.row, scope.$index, true)"
                      >推送</el-button
                    >
                  </el-tooltip>
                </el-link> -->
                <!-- <el-button
                  size="mini"
                  style="margin-right:10px;"
                  v-if="!scope.row.isEdit && recordsName == '严重超期记录'"
                  v-has="'M1107057'"
                  type="text"
                  @click="pushTask(scope.row.id)"
                  >推 送</el-button
                > -->
                <el-tooltip
                  content="推送"
                  placement="top"
                  v-if="!scope.row.isEdit && recordsName == '严重超期记录'"
                  v-has="'M1111037'"
                  effect="light"
                >
                  <span @click="pushTask(scope.row.id)" class="option_export"></span>
                </el-tooltip>

                <el-tooltip
                  :content="scope.row.isEdit ? '保存' : '编辑'"
                  placement="top"
                  v-has="recordsName == '严重超期记录' ? 'M1111038' : 'M1111029'"
                  effect="light"
                >
                  <span
                    @click="gridTaskDataChange(scope.row, true)"
                    :class="scope.row.isEdit ? 'option_confirm' : 'option_update'"
                  ></span>
                </el-tooltip>

                <!-- <el-button
                  style="margin-right:10px;"
                  type="text"
                  size="small"
                  v-has="recordsName=='严重超期记录'?'M1107058':'M1107054'"
                  @click="gridTaskDataChange(scope.row, true)"
                  >{{ scope.row.isEdit ? '保存' : '编辑' }}</el-button
                > -->
                <el-tooltip
                  v-if="!scope.row.isEdit"
                  v-has="recordsName == '严重超期记录' ? 'M1111039' : 'M1111030'"
                  content="关闭"
                  placement="top"
                  effect="light"
                >
                  <span class="option_close" @click="handleClose(scope.row)"></span>
                </el-tooltip>
                <!-- <el-button size="mini" v-if="!scope.row.isEdit" v-has="recordsName=='严重超期记录'?'M1107059':'M1107055'" type="text" @click="handleClose(scope.row)"
                  >关 闭</el-button
                > -->
                <el-tooltip v-else content="取消" placement="top" effect="light">
                  <span class="option_reback" @click="gridTaskDataChange(scope.row, false)"></span>
                </el-tooltip>

                <!-- <el-button v-else type="text" size="small" @click="gridTaskDataChange(scope.row, false)">取消</el-button> -->
              </template>
            </el-table-column>
          </el-table>
        </div>
      </el-card>
    </div>
  </div>
</template>
<script>
/* 引入通用的弹出框 */
import CommonDialog from '../../components/commonDialog/commonDialog.vue'
// 会议接口Api
import { DelateMetting } from '../../api/delateMeeting/server'
import { FeedBack } from '../../api/feedBack/server'
import Multiselect from 'vue-multiselect'
import socialUpload from '../../components/socialUpload/socialUpload.vue'
import { taskPandect } from '../../api/tasks/server'
// import RadioStatusBtn from '@/components/radioStatusBtn/radioStatusBtn.vue'
// import popovers from '@/components/popovers/popovers'
export default {
    name: '',
    components: { CommonDialog, Multiselect, socialUpload },
    props: {},
    data() {
    // 反馈ID数字输入框校验规则
        var checkNumbers = (rule, value, callback) => {
            if (!value) {
                return callback(new Error('请输入反馈ID'))
            }
            setTimeout(() => {
                if (!Number.isInteger(value)) {
                    callback(new Error('请输入数字值'))
                } else {
                    callback()
                }
            }, 1000)
        }
        // 任务ID数字输入框校验规则
        var checkTaskNumbers = (rule, value, callback) => {
            if (!value) {
                return callback(new Error('请输入任务ID'))
            }
            setTimeout(() => {
                if (!Number.isInteger(value)) {
                    callback(new Error('请输入数字值'))
                } else {
                    callback()
                }
            }, 1000)
        }
        return {
            pickerOptions: {
                disabledDate(time) {
                    const _now = Date.now()
                    const seven = 1 * 24 * 60 * 60 * 1000
                    const sevenDays = _now - seven
                    return time.getTime() < sevenDays
                }
            },
            textMap: {
                update: 'Edit',
                create: 'Create'
            },
            gridTaskData: {
                data: [],
                sel: null,
                columns: [
                    { title: '反馈ID', field: 'feedBackNumber', width: 50, istrue: true },
                    { title: '所属产品', field: 'productName', width: 120, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 120, istrue: true },
                    { title: 'C1/C2', field: 'taskCTag', width: 120, istrue: true },
                    { title: '主题', field: 'taskTitle', width: 120, istrue: true },
                    { title: '下一步措施', field: 'nextPlan', width: 70, istrue: true },
                    { title: '当前进展', field: 'currentProgress', width: 70, istrue: true },
                    { title: '责任人', field: 'taskResponsibleUserName', width: 70, istrue: true },
                    { title: '计划完成时间', field: 'taskExpectedCompletedDate', width: 70, istrue: true },
                    { title: '是否继续上会', field: 'continueMeeting', width: 70, istrue: true },
                    { title: '主负责人', field: 'masterId', width: 70, istrue: true },
                    { title: '其他负责人', field: 'otherPrincipaluserIdList', width: 120, istrue: true }
                ]
            },
            dialogFormTemp: {
                meetingRecordId: undefined,
                feedBackNumber: '',
                productName: '',
                taskNumber: '',
                ctag: 'C2',
                nextPlan: '',
                title: '',
                currentProgress: '',
                responsibleUserId: '',
                responsibleUserName: '',
                otherPrincipalUserId: [],
                expectedCompletedDate: '',
                continueMeetingTag: true,
                masterUser: '',
                masterId: '',
                severelyOverdue: false
            },
            //  continueMeeting: this.rowData.continueMeeting,
            //     ctag: 'C2',
            //     currentProgress: '',
            //     expectedCompletedDate: '',
            //     masterUser: this.rowData.masterUser,
            //     masterId: this.rowData.masterId,
            //     meetingRecordId: this.meetingRecordId,
            //     nextPlan: '',
            //     otherList: c,
            //     otherPrincipalUserNameString: this.rowData.otherPrincipalUserName,
            //     otherPrincipalUserId: b,
            //     responsibleUserId: this.rowData.masterId,
            //     responsibleUserName: this.rowData.masterUser,
            //     otherPrincipaluserList: [],
            //     title: '',
            //     isEdit: true,
            //     type: 'add'
            dialogFormRules: {
                feedBackNumber: [{ required: true, message: '请输入反馈ID', trigger: 'change' }],
                productName: [{ required: false, message: '请输入产品名称', trigger: 'change' }],
                taskNumber: [{ required: false, message: '请输入任务ID', trigger: 'change' }],
                ctag: [{ required: true, message: '请选择任务标识', trigger: 'change' }],
                nextPlan: [{ required: true, message: '请输入下一步计划', trigger: 'change' }],
                title: [{ required: true, message: '请输入主题', trigger: 'change' }],
                currentProgress: [{ required: true, message: '请输入当前进展', trigger: 'change' }],
                responsibleUserId: [{ required: true, message: '请选择责任人', trigger: 'change' }],
                responsibleUserName: [{ required: true, message: '请选择责任人', trigger: 'change' }],
                otherPrincipaluserList: [{ required: true, message: '请选择其他负责人', trigger: 'change' }],
                expectedCompletedDate: [{ required: true, message: '请选择计划完成时间', trigger: 'change' }],
                continueMeetingTag: [{ required: false, message: '请选择是否继续上会', trigger: 'change' }],
                otherPrincipalUserId: [{ required: true, message: '请选择其他负责人', trigger: 'change' }],
                masterId: [{ required: true, message: '请选择主负责人', trigger: 'change' }]
            },
            dialogFormVisible: false,
            fullscreenLoading: false,
            // 关闭弹出框表单内容
            closeForm: {
                reason: '',
                remark: '',
                solution: ''
            },
            taskCommonId: '',
            closeFormRules: {
                reason: [{ required: true, message: '请输入关闭原因', trigger: 'change' }],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }]
            },
            recordsName: '超期记录',
            recordType: '1',
            needEditArr: ['当前进展', '本周会议讨论内容', '下一步措施', '主负责人', '其他负责人'],

            noFeedBackReason: false,
            noTaskReason: false,
            editForm: {
                thisWeekMeetingDiscussionContent: ''
            },
            editFormRules: {
                thisWeekMeetingDiscussionContent: [
                    {
                        required: true,
                        message: '请输入本周会议讨论内容',
                        trigger: 'change'
                    }
                ]
            },
            options: [],
            toEmail: [],
            addMail: {},
            contacts: [],
            userInfo: {
                name: '',
                id: ''
            },
            productType: '1',
            editorOption: {
                modules: {
                    toolbar: [
                        ['bold', 'italic', 'underline', 'strike'], // toggled buttons
                        ['blockquote', 'code-block'],
                        [{ header: 1 }, { header: 2 }],
                        [{ list: 'ordered' }, { list: 'bullet' }],
                        [{ script: 'sub' }, { script: 'super' }],
                        [{ indent: '-1' }, { indent: '+1' }],
                        [{ direction: 'rtl' }]
                    ]
                }
            },
            createDialogTitle: '',
            createDialogVisible: false,
            createForm: {
                agenda: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                reason: '', // 上会原因
                remark: '', // 备注
                version: '',
                createUserName: '', // 反馈人
                createUser: '',
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            },
            createType: '',
            createFormFormRules: {
                feedBackNumber: [{ required: true, validator: checkNumbers, trigger: 'change' }],
                createUserName: [{ required: false, message: '请输入反馈人', trigger: 'blur' }],
                createDay: [{ required: false, message: '请输入创建天数', trigger: 'blur' }],
                discussionContent: [{ required: true, message: '请输本次会议讨论内容', trigger: 'blur' }],
                continueMeetingTag: [{ required: false, message: '请输入是否继续上会', trigger: 'change' }],
                currentEsponsibleUserName: [{ required: false, message: '请输入主负责人', trigger: 'blur' }],
                masterId: [{ required: true, message: '请选择主负责人', trigger: 'blur' }],
                otherPrincipalUserName: [{ required: true, message: '请选择其他负责人', trigger: 'blur' }],
                applicantId: [{ required: true, message: '请选择申请人', trigger: 'blur' }],
                productName: [{ required: false, message: '请输入所属产品', trigger: 'blur' }],
                title: [{ required: false, message: '请输入标题', trigger: 'blur' }],
                reason: [{ required: true, message: '请输入上会原因', trigger: 'blur' }],
                applyer: [{ required: false, message: '请输入申请人', trigger: 'blur' }],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }],
                reviseRecords: [{ required: true, message: '请输入V2信息修订记录', trigger: 'blur' }]
            },
            taskMissionTitle: '',
            taskMissionVisible: false,
            taskMissionForm: {
                id: '',
                agenda: '',
                feedBackNumber: '', // 反馈ID
                createUserName: '', // 反馈人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                discussionContent: '', // 本次会议讨论内容
                continueMeetingTag: true, // 是否继续上会
                currentEsponsibleUserName: '', // 主负责人
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                remark: '', // 备注
                reviseRecords: '', // V2信息修订记录
                principalName: [],
                mainName: [],
                meetingId: '',
                reason: '' // 上会原因
            },
            taskMissionType: '',
            taskMissionFormRules: {
                taskNumber: [{ required: true, validator: checkTaskNumbers, trigger: 'change' }],
                // feedBackNumber: [{ required: false, validator: checkNumbers, trigger: 'change' }],
                feedBackNumber: [{ required: false, message: '请输入反馈Id', trigger: 'blur' }],
                createUserName: [{ required: false, message: '请输入反馈人', trigger: 'blur' }],
                createDay: [{ required: false, message: '请输入创建天数', trigger: 'blur' }],
                discussionContent: [
                    {
                        required: true,
                        message: '请输本次会议讨论内容',
                        trigger: 'blur'
                    }
                ],
                continueMeetingTag: [{ required: false, message: '请输入是否继续上会', trigger: 'change' }],
                currentEsponsibleUserName: [{ required: false, message: '请输入主负责人', trigger: 'blur' }],
                masterId: [{ required: true, message: '请选择主负责人', trigger: 'change' }],
                otherPrincipalUserName: [{ required: true, message: '请选择其他负责人', trigger: 'change' }],
                applicantId: [{ required: true, message: '请选择申请人', trigger: 'change' }],
                productName: [{ required: false, message: '请输入所属产品', trigger: 'blur' }],
                title: [{ required: false, message: '请输入标题', trigger: 'blur' }],
                reason: [{ required: true, message: '请输入上会原因', trigger: 'blur' }],
                applyer: [{ required: false, message: '请输入申请人', trigger: 'blur' }],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }],
                reviseRecords: [{ required: true, message: '请输入V2信息修订记录', trigger: 'blur' }]
            },
            loading: false,
            colOptions: [],
            taskOpt: [],
            taskSlet: [],
            colSelect: [],
            dynamicTags: [],
            isEmpty: null,
            isEmpty2: null,
            dynamicTags2: [],
            inputValue2: '',
            inputVisible2: false,
            inputVisible: false,
            inputValue: '',
            pannelName: 'V1',

            // 表格数据---------------
            v1_top_colOptions: [],
            v1_top_colSelect: [],
            v1_bottom_colOptions: [],
            v1_bottom_colSelect: [],
            v2_top_colOptions: [],
            v2_top_colSelect: [],
            v2_bottom_colOptions: [],
            v2_bottom_colSelect: [],
            // v1超期反馈
            overDueFeedBackData1: {
                data: [],
                columns: [
                    { title: '反馈ID', field: 'feedBackNumber', width: 50, istrue: true },
                    { title: '所属产品', field: 'productName', width: 120, istrue: true },
                    { title: '标题', field: 'title', width: 120, istrue: true },
                    { title: '反馈人', field: 'createUserName', width: 70, istrue: true },
                    { title: '创建天数', field: 'createDay', width: 70, istrue: true },
                    { title: '上会原因', field: 'reason', width: 70, istrue: true },
                    {
                        title: '是否继续上会',
                        field: 'continueMeetingTagString',
                        width: 70,
                        istrue: true
                    },
                    { title: '主负责人', field: 'master', width: 70, istrue: true },
                    {
                        title: '其他负责人',
                        field: 'otherPrincipalUserName',
                        width: 120,
                        istrue: true
                    },
                    { title: '备注', field: 'remark', width: 70, istrue: true }
                ]
            },
            overDueFeedBackDataloading: false,
            // v2超期反馈
            overDueFeedBackData2: {
                data: [],
                columns: [
                    { title: '反馈ID', field: 'feedBackNumber', width: 50, istrue: true },
                    { title: '所属产品', field: 'productName', width: 120, istrue: true },
                    { title: '标题', field: 'title', width: 120, istrue: true },
                    { title: '反馈人', field: 'createUserName', width: 70, istrue: true },
                    { title: '创建天数', field: 'createDay', width: 70, istrue: true },
                    { title: '本周会议讨论内容', field: 'discussionContent', width: 120, istrue: true },
                    { title: '是否继续上会', field: 'continueMeetingTagString', width: 70, istrue: true },
                    { title: '主负责人', field: 'master', width: 70, istrue: true },
                    { title: '其他负责人', field: 'otherPrincipalUserName', width: 120, istrue: true },
                    { title: '会议议程', field: 'agenda', width: 70, istrue: true }
                ]
            },
            // v1反馈任务
            feedbackTaskData1: {
                data: [],
                columns: [
                    { title: '反馈ID', field: 'feedBackNumber', width: 50, istrue: true },
                    { title: '所属产品', field: 'productName', width: 120, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 50, istrue: true },
                    { title: '任务标题', field: 'title', width: 120, istrue: true },
                    { title: '任务反馈人', field: 'createUserName', width: 70, istrue: true },
                    { title: '创建天数', field: 'createDay', width: 70, istrue: true },
                    { title: '上会原因', field: 'reason', width: 70, istrue: true },
                    { title: '是否继续上会', field: 'continueMeetingTagString', width: 70, istrue: true },
                    { title: '主负责人', field: 'master', width: 120, istrue: true },
                    { title: '其他负责人', field: 'otherPrincipalUserName', width: 70, istrue: true }
                ]
            },
            feedbackTaskDataloading: false,
            // v2反馈任务
            feedbackTaskData2: {
                data: [],
                columns: [
                    { title: '反馈ID', field: 'feedBackNumber', width: 50, istrue: true },
                    { title: '所属产品', field: 'productName', width: 120, istrue: true },
                    { title: '任务ID', field: 'taskNumber', width: 50, istrue: true },
                    { title: '任务标题', field: 'title', width: 120, istrue: true },
                    { title: '任务反馈人', field: 'createUserName', width: 70, istrue: true },
                    { title: '任务创建天数', field: 'createDay', width: 100, istrue: true },
                    { title: '本周会议讨论内容', field: 'discussionContent', width: 120, istrue: true },
                    { title: '是否继续上会', field: 'continueMeetingTagString', width: 100, istrue: true },
                    { title: '主负责人', field: 'master', width: 70, istrue: true },
                    { title: '其他负责人', field: 'otherPrincipalUserName', width: 120, istrue: true },
                    { title: '会议议程', field: 'agenda', width: 70, istrue: true }
                ]
            },
            recordTableDataLoading: false,
            // 会议记录
            recordTableData: {
                sel: null, // 选中行
                columns: [
                    { title: '反馈ID', field: 'feedBackNumber', width: 80, istrue: true },
                    { title: '所属产品', field: 'productName', width: 200, istrue: true },
                    { title: '反馈类型', field: 'feedBackType', width: 200, istrue: true },
                    { title: '标题', field: 'title', width: 200, istrue: true },
                    { title: '反馈人', field: 'feedBackCreateUser', width: 120, istrue: true },
                    { title: '反馈时间', field: 'feedBackCreateAt', width: 200, istrue: true },
                    { title: '创建天数', field: 'createDay', width: 200, istrue: true },
                    { title: '历史会议讨论内容', field: 'historyMeetingDiscussionContent', width: 200, istrue: true },
                    // { title: '历史下一步措施', field: 'historyNextPlan', width: 200, istrue: false },
                    { title: '历史会议措施', field: 'historyMeasure', width: 200, istrue: true },
                    { title: '历史主负责人', field: 'histoyMaster', width: 200, istrue: false },
                    { title: '当前进展', field: 'currentProgress', width: 250, istrue: true },
                    { title: '本周会议讨论内容', field: 'thisWeekMeetingDiscussionContent', width: 250, istrue: true },
                    { title: '下一步措施', field: 'nextPlan', width: 250, istrue: true },
                    { title: '是否继续上会', field: 'continueMeeting', width: 200, istrue: true },
                    { title: '主负责人', field: 'masterId', width: 250, istrue: true },
                    { title: '其他负责人', field: 'otherPrincipaluserIdList', width: 250, istrue: true },
                    { title: '由谁处理', field: 'dealWithUser', width: 200, istrue: false },
                    { title: '处理时间', field: 'dealWithDate', width: 200, istrue: false },
                    { title: '反馈状态', field: 'status', width: 80, istrue: true },
                    { title: '反馈处理阶段', field: 'feedBackStage', width: 80, istrue: true },
                    { title: '反馈关闭原因', field: 'feedBackCloseReason', width: 200, istrue: true },
                    { title: '反馈关闭时间', field: 'feedBackCloseDate', width: 200, istrue: true },
                    { title: '反馈关闭人', field: 'feedBackCloseUser', width: 200, istrue: true },
                    { title: '任务关闭人', field: 'taskCloseUser', width: 200, istrue: true },
                    { title: '反馈激活人', field: 'feedBackActiveUser', width: 200, istrue: true },
                    { title: '任务激活人', field: 'taskActiveUser', width: 200, istrue: true },
                    { title: 'BUG ID(转)', field: 'bugId', width: 200, istrue: false },
                    { title: 'BUG状态(转)', field: 'bugStatus', width: 200, istrue: false },
                    { title: 'BUG类型(转)', field: 'bugType', width: 200, istrue: false },
                    { title: 'BUG严重程度(转)', field: 'bugDegree', width: 200, istrue: false },
                    { title: 'BUG优先级(转)', field: 'bugLevel', width: 200, istrue: false },
                    // { title: '计划解决版本(转)', field: 'plannedSolutionVersion', width: 120, istrue: false },
                    { title: 'BUG ID(绑)', field: 'bindBugId', width: 200, istrue: false },
                    { title: 'BUG状态(绑)', field: 'bindBugStatus', width: 200, istrue: false },
                    { title: 'BUG类型(绑)', field: 'bindBugType', width: 200, istrue: false },
                    { title: 'BUG严重程度(绑)', field: 'bindBugDegree', width: 200, istrue: false },
                    { title: 'BUG优先级(绑)', field: 'bindBugLevel', width: 200, istrue: false },
                    // { title: '计划解决版本(绑)', field: 'bindPlannedSolutionVersion', width: 120, istrue: false },
                    { title: '原始需求ID(转)', field: 'originalDemandId', width: 200, istrue: false },
                    { title: '原始需求状态(转)', field: 'originalDemandStatus', width: 200, istrue: false },
                    { title: '原始需求ID(绑)', field: 'bindOriginalDemandId', width: 200, istrue: false },
                    { title: '原始需求状态(绑)', field: 'bindOriginalDemandStatus', width: 200, istrue: false },
                    // { title: '原始需求版本(转)', field: 'originalDemandPlanVersion', width: 200, istrue: false },
                    // { title: '计划发布版本(转)', field: 'originalPlannedReleaseVersion', width: 120, istrue: false },
                    // { title: '产品需求ID(转)', field: 'productDemandId', width: 200, istrue: false },
                    // { title: '产品需求状态(转)', field: 'productDemandStatus', width: 200, istrue: false },
                    { title: '产品需求ID(绑)', field: 'bindProductDemandId', width: 200, istrue: false },
                    { title: '产品需求状态(绑)', field: 'bindProductDemandStatus', width: 200, istrue: false },
                    { title: '产品需求版本(绑)', field: 'bindProductDemandPlanVersion', width: 200, istrue: false },
                    { title: '市场需求 ID（绑）', field: 'bindMarketDemandId', width: 200, istrue: false },
                    { title: '市场需求状态（绑）', field: 'bindMarketDemandStatus', width: 200, istrue: false },
                    { title: '版本是否发布', field: 'storyPublishTag', width: 200, istrue: false }

                    // { title: '产品需求版本(转)', field: 'productDemandPlanVersion', width: 120, istrue: false },
                    // { title: '产品计划发布版本(转)', field: 'productPlannedReleaseVersion', width: 120, istrue: false },

                    // { title: '原始需求版本(绑)', field: 'bindOriginalDemandPlanVersion', width: 120, istrue: false },

                    // { title: '关闭原因', field: 'closeReason', width: 120, istrue: false },
                    // { title: '当前负责人', field: 'currentMaster', width: 120, istrue: true },
                    // { title: '处理进度', field: 'dealWithProgress', width: 80, istrue: true },
                    // { title: '研发跟踪状态', field: 'developerTrackStatus', width: 120, istrue: false },
                    // { title: '技术部跟踪状态', field: 'technicalDepartmentTrackStatus', width: 120, istrue: false },
                    // { title: '关闭人', field: 'closeUser', width: 120, istrue: true },
                    // { title: '激活人', field: 'activatByUser', width: 120, istrue: true },
                    // { title: '备注', field: 'remark', width: 120, istrue: false }
                ],
                data: []
            },

            multipleSelection: [],

            // 弹出框-----------------
            deleteDialogVisible: false,
            modelTitle: '',
            modelType: '',

            feedBackDialogVisible: false,
            startTime: '',
            endTime: '',
            startTime2: '',
            endTime2: '',

            taskList: [],

            versionTitle: '',
            versionFormVisible: false,
            versionForm: {
                appendixsName: '', // 附件名称
                title: '', // 主题
                content: '',
                copyRecipients: [],
                recipientUser: [],
                receiver: '', // 收件人
                recipients: '', // 抄送人
                discussionContent: '', // 发布内容
                addtion: '' // 附加
            },
            versionFormRules: {
                title: [{ required: true, message: '请输入主题', trigger: 'change' }]
            },
            recordsForm: {
                feedBackNumber: '',
                taskNumberList: []
            },
            recordsFormRules: {
                feedBackNumber: [{ required: true, validator: checkNumbers, trigger: 'blur' }],
                createDay: [{ required: false, validator: checkNumbers, trigger: 'blur' }],
                taskNumberList: [
                    {
                        type: 'array',
                        required: false,
                        message: '请至少选择一个任务',
                        trigger: 'change'
                    }
                ]
            },
            settingss: '',
            recordsFormVisible: false,
            rowObj: {},
            seriousDelateVisible: false,
            seriousForm: {},
            seriousFormRules: {},
            replyDialogTitle: '',
            replyDialogVisible: false,
            replyForm: {
                agenda: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                reason: '', // 上会原因
                remark: '', // 备注
                version: '',
                createUserName: '', // 反馈人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            },
            replyFormRules: {
                feedBackNumber: [{ required: false, trigger: 'change' }],
                createUserName: [{ required: false, message: '请输入反馈人', trigger: 'blur' }],
                createDay: [{ required: false, message: '请输入创建天数', trigger: 'blur' }],
                discussionContent: [
                    {
                        required: true,
                        message: '请输本次会议讨论内容',
                        trigger: 'blur'
                    }
                ],
                masterId: [{ required: true, message: '请选择主负责人', trigger: 'change' }],
                applicantId: [{ required: true, message: '请选择申请人', trigger: 'change' }],
                continueMeetingTag: [{ required: true, message: '请输入是否继续上会', trigger: 'change' }],
                otherPrincipalUserName: [{ required: true, message: '请输入其他负责人', trigger: 'blur' }],
                currentEsponsibleUserName: [{ required: false, message: '请输入主负责人', trigger: 'blur' }],
                productName: [{ required: false, message: '请输入所属产品', trigger: 'blur' }],
                title: [{ required: false, message: '请输入标题', trigger: 'blur' }],
                reason: [{ required: true, message: '请输入上会原因', trigger: 'blur' }],
                applyer: [{ required: false, message: '请输入申请人', trigger: 'blur' }],
                remark: [{ required: false, message: '请输入备注', trigger: 'blur' }],
                reviseRecords: [{ required: true, message: '请输入V2信息修订记录', trigger: 'blur' }]
            },
            setting: {
                branding: false,
                menubar: false,
                toolbar:
          'undo redo  | formatselect alignleft aligncenter alignright alignjustify  numlist bullist  | fontselect fontsizeselect forecolor backcolor | bold italic underline strikethrough | indent outdent | superscript subscript | removeformat |',
                toolbar_drawer: 'sliding',
                quickbars_selection_toolbar:
          'removeformat | bold italic underline strikethrough | fontsizeselect forecolor backcolor',
                plugins: 'link image  table lists fullscreen',
                language: 'zh_CN',
                init_instance_callback: editor => {
                    if (this.content) {
                        editor.setContent(this.content)
                    }
                    this.finishInit = true
                    editor.on('NodeChange Change SetContent KeyUp', () => {
                        this.hasChanged = true
                    })
                }, // 上传图片
                convert_urls: false,
                automatic_uploads: true, // 开启点击图片上传时，自动进行远程上传操作
                images_upload_base_path: `${process.env.VUE_APP_GOLDWIND_BASE_API}`, // 图片上传的基本路径
                images_upload_url: '/v2/file/upload',
                images_upload_handler: (blobInfo, success, failure) => {
                    var xhr, formData

                    xhr = new XMLHttpRequest()
                    xhr.withCredentials = false
                    xhr.open('POST', `${process.env.VUE_APP_GOLDWIND_BASE_API}` + '/v2/file/upload')
                    xhr.setRequestHeader('token', JSON.parse(sessionStorage.getItem('USERINFO')).token)
                    // xhr.setRequestHeader('token', localStorage.getItem('token'));
                    formData = new FormData()
                    formData.append('file', blobInfo.blob())

                    formData.append('checkOfficeFmt', false)
                    formData.append('isTmp', false)
                    xhr.onload = function(e) {
                        var json

                        if (xhr.errcode == '0') {
                            failure('服务器错误:' + xhr.msg)
                            return
                        }
                        json = JSON.parse(this.responseText)
                        if (!json.data || typeof json.data.fileSourceId != 'string') {
                            failure('服务器错误')
                            return
                        }
                        success(
                            `${process.env.VUE_APP_GOLDWIND_BASE_API}` +
                '/v2/file/download?' +
                '&fileSourceId=' +
                json.data.fileSourceId
                        )
                    }
                    xhr.send(formData)
                },
                image_advtab: false,
                language_url: 'tinymce/langs/zh_CN.js', // 语言包的路径
                elementpath: false, // 隐藏元素路径，不明白的可以切换true/false观察页面
                statusbar: false,
                resize: false,
                height: 400
            },
            otherPrincipalList: [],
            productUserList: [],
            recrodsUserList: [],
            allUserList: [],
            updateDialogShow: false,
            innerVisible: false,
            taskEditForm: {
                nextPlan: ''
            },
            taskEditFormRules: {
                nextPlan: [{ required: true, message: '填写下一步措施', trigger: 'change' }]
            },
            gridData: {
                data: [],
                sel: null
            },

            cellEditDialogForm: {
                currentProgress: '',
                thisWeekMeetingDiscussionContent: '',
                nextPlan: '',
                masterUser: '',
                meetingId: '',
                otherPrincipalUserName: '',
                otherPrincipalUserId: [] // 其他负责人id
            },
            cellEditDialog: false,
            cellEditDialogType: '',
            cellEditDialogRules: {
                tArr: [
                    'currentProgress',
                    'thisWeekMeetingDiscussionContent',
                    'nextPlan',
                    'masterUser',
                    'otherPrincipalUserName'
                ],
                currentProgress: [{ required: true, message: '请填写当前进展', trigger: 'change' }],
                thisWeekMeetingDiscussionContent: [
                    {
                        required: true,
                        message: '请填写本周会议讨论内容',
                        trigger: 'change'
                    }
                ],
                nextPlan: [{ required: true, message: '下一步措施', trigger: 'change' }],
                masterUser: [{ required: true, message: '请选择主负责人', trigger: 'change' }],
                otherPrincipalUserName: [{ required: true, message: '请选择其他负责人', trigger: 'change' }]
            },
            rowData: {},
            meetingRecordId: '',
            // 控制关闭弹出框的显示和隐藏
            closeDialogVisible: false,
            closeReasonList: []
        }
    },
    filters: {
        formatTimer: function(value) {
            if (!value) {
                return ''
            }
            var date = new Date(value + '+0800')
            console.log('date', date)
            if (date == 'Invalid Date') {
                value = value.replace(/T/g, ' ') // 去掉T
                value = value.replace(/-/g, '/')
                value = value.replace(/\.\d+/, ' ')// 去掉毫秒
                console.log('value', value)
                date = new Date(value + '+0800')
            }
            // const date = new Date(value)
            const y = date.getFullYear()
            let MM = date.getMonth() + 1
            MM = MM < 10 ? '0' + MM : MM
            let d = date.getDate()
            d = d < 10 ? '0' + d : d
            let h = date.getHours()
            h = h < 10 ? '0' + h : h
            let m = date.getMinutes()
            m = m < 10 ? '0' + m : m
            let s = date.getSeconds()
            s = s < 10 ? '0' + s : s
            return y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s
        },
        transTrue2False: function(value) {
            if (value === true || value === 'true') {
                return '继续上会'
            } else if (value === false || value === 'false') {
                return '转线下跟进'
            } else {
                return value
            }
        },
        transTrue2False2: function(value) {
            if (value === true || value === 'true') {
                return '已发布'
            } else if (value === false || value === 'false') {
                return '未发布'
            } else {
                return value
            }
        },
        filterNull: function(params) {
            if (params == '' || params == null) {
                return '无'
            } else {
                return params
            }
        },
        handleArr2str(value) {
            if (value) {
                let result = ''
                value.forEach(element => {
                    result = result + ' ' + element
                })
                return result
            }
            return ''
        },
        tagsFilter(v) {
            if (v == 0) {
                return 'C1'
            } else if (v == 1) {
                return 'C2'
            } else {
                return ''
            }
        }
    },
    watch: {
    //  监听表格显示项
        colOptions(valArr) {
            var arr = this.colSelect.filter(i => valArr.indexOf(i) < 0) // 未选中
            this.recordTableData.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            localStorage.setItem('recordTableOpt', JSON.stringify(this.colOptions))
            this.$nextTick(() => {
                this.$refs.multipleTable.doLayout()
            })
        },

        v1_top_colOptions(valArr) {
            var arr = this.v1_top_colSelect.filter(i => valArr.indexOf(i) < 0) // 未选中
            this.overDueFeedBackData1.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            localStorage.setItem('v1_top_colOptions', JSON.stringify(this.v1_top_colOptions))
            this.$nextTick(() => {
                this.$refs.overDueFeedBackRef1.doLayout()
            })
        },
        v1_bottom_colOptions(valArr) {
            var arr = this.v1_bottom_colSelect.filter(i => valArr.indexOf(i) < 0) // 未选中
            this.feedbackTaskData1.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            localStorage.setItem('v1_bottom_colOptions', JSON.stringify(this.v1_bottom_colOptions))
            this.$nextTick(() => {
                this.$refs.feedbackTaskDataRef1.doLayout()
            })
        },
        v2_top_colOptions(valArr) {
            var arr = this.v2_top_colSelect.filter(i => valArr.indexOf(i) < 0) // 未选中
            this.overDueFeedBackData2.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            localStorage.setItem('v2_top_colOptions', JSON.stringify(this.v2_top_colOptions))
            this.$nextTick(() => {
                this.$refs.overDueFeedBackRef1.doLayout()
            })
        },
        v2_bottom_colOptions(valArr) {
            var arr = this.v2_bottom_colSelect.filter(i => valArr.indexOf(i) < 0) // 未选中
            this.feedbackTaskData2.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            localStorage.setItem('v2_bottom_colOptions', JSON.stringify(this.v2_top_colOptions))
            this.$nextTick(() => {
                this.$refs.feedbackTaskDataRef2.doLayout()
            })
        },
        taskOpt(valArr) {
            var arr = this.taskSlet.filter(i => valArr.indexOf(i) < 0) // 未选中
            this.gridTaskData.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            localStorage.setItem('gridTaskDataColunm', JSON.stringify(this.taskOpt))
            this.$nextTick(() => {
                this.$refs.gridTaskDataTable.doLayout()
            })
        }
    },
    created() {
    //  创建表格显示项
        var _this = this
        for (let i = 0; i < _this.recordTableData.columns.length; i++) {
            _this.colSelect.push(_this.recordTableData.columns[i].title)
            if (_this.recordTableData.columns[i].istrue == false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.colOptions.push(_this.recordTableData.columns[i].title)
        }

        for (let i = 0; i < _this.overDueFeedBackData1.columns.length; i++) {
            _this.v1_top_colSelect.push(_this.overDueFeedBackData1.columns[i].title)
            if (_this.overDueFeedBackData1.columns[i].istrue == false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v1_top_colOptions.push(_this.overDueFeedBackData1.columns[i].title)
        }
        for (let i = 0; i < _this.feedbackTaskData1.columns.length; i++) {
            _this.v1_bottom_colSelect.push(_this.feedbackTaskData1.columns[i].title)
            if (_this.feedbackTaskData1.columns[i].istrue == false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v1_bottom_colOptions.push(_this.feedbackTaskData1.columns[i].title)
        }
        for (let i = 0; i < _this.overDueFeedBackData2.columns.length; i++) {
            _this.v2_top_colSelect.push(_this.overDueFeedBackData2.columns[i].title)
            if (_this.overDueFeedBackData2.columns[i].istrue == false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v2_top_colOptions.push(_this.overDueFeedBackData2.columns[i].title)
        }
        for (let i = 0; i < _this.feedbackTaskData2.columns.length; i++) {
            _this.v2_bottom_colSelect.push(_this.feedbackTaskData2.columns[i].title)
            if (_this.feedbackTaskData2.columns[i].istrue == false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.v2_bottom_colOptions.push(_this.feedbackTaskData2.columns[i].title)
        }
        for (let i = 0; i < _this.gridTaskData.columns.length; i++) {
            _this.taskSlet.push(_this.gridTaskData.columns[i].title)
            if (_this.gridTaskData.columns[i].istrue == false) {
                // 初始化不想展示的列可以放在这个条件里
                continue
            }
            _this.taskOpt.push(_this.gridTaskData.columns[i].title)
        }
    },
    beforeRouteEnter(to, from, next) {
        console.log('from', from)
        console.log('to', to)
        if (from.path == '/Details') {
            to.meta.keepAlive = true
        } else {
            to.meta.keepAlive = false
        }

        next()
    },
    activated() {
    // 如果不是从详情页面返回，则重新加载数据
        if (!this.$route.meta.keepAlive) {
            // 加载页面数据
            this.getLocalOpt()
            this.getUserList()
            this.getVersionMeetingList()
            this.UserGetUserInfoAsync()
            this.getcloseReasonList()
        }
        this.$route.meta.keepAlive = true

    // 从新设置页面得路由元信息
    },
    mounted() {
    // this.readMasterUser();
        this.getLocalOpt()
        this.getUserList()
        this.getVersionMeetingList()
        this.UserGetUserInfoAsync()
        this.getcloseReasonList()
    },
    methods: {
        resetTemp() {
            this.dialogFormTemp = {
                meetingRecordId: undefined,
                feedBackNumber: '',
                productName: '',
                taskNumber: '',
                ctag: 'C2',
                nextPlan: '',
                title: '',
                currentProgress: '',
                responsibleUserId: '',
                responsibleUserName: '',
                otherPrincipalUserId: [],
                expectedCompletedDate: '',
                continueMeetingTag: true,
                masterUser: '',
                masterId: '',
                severelyOverdue: false
            }
            this.productUserList = []
            this.recrodsUserList = []
        },
        addTasks() {
            this.resetTemp()
            this.dialogFormVisible = true
            this.$nextTick(() => {
                this.$refs['dataForm'].clearValidate()
            })
        },
        createData() {
            this.$refs['dataForm'].validate(valid => {
                if (valid) {
                    this.dialogFormVisible = false
                    this.createDataQuery(this.dialogFormTemp)
                }
            })
        },
        async createDataQuery(data) {
            const parmars = {
                meetingId: this.$route.query.id,
                feedBackNumber: data.feedBackNumber,
                ctag: data.ctag,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.expectedCompletedDate,
                meetingRecordId: data.meetingRecordId,
                continueMeetingTag: data.continueMeetingTag,
                nextPlan: data.nextPlan,
                title: data.title,
                masterUser: data.masterId,
                otherPrincipalUserId: data.otherPrincipalUserId,
                responsibleUserId: data.responsibleUserId
            }
            console.log(parmars)
            if (this.recordsName == '超期记录') {
                parmars.severelyOverdue = false
            } else {
                parmars.severelyOverdue = true
            }
            try {
                const result = await DelateMetting.createMeetingRecordTask(parmars)
                console.log('result', result)
                if (result.success) {
                    this.getMeetingRecord()
                    this.$message.success('新建成功')
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        async updateRecordTask(data) {
            const parmars = {
                ctag: data.taskCTag,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.taskExpectedCompletedDate,
                meetingRecordId: data.id,
                nextPlan: data.nextPlan,
                title: data.taskTitle,
                masterUser: data.masterId,
                continueMeeting: data.continueMeeting,
                otherPrincipalUserId: data.otherPrincipaluserIdList,
                responsibleUserId: data.taskResponsibleUserId
            }
            try {
                const result = await DelateMetting.updateMeetingRecordTask(parmars)
                if (result.success) {
                    this.getMeetingRecord()
                    this.$message.success('修改成功')
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        getLocalOpt() {
            // recordTableOpt  v1_top_colOptions v1_bottom_colOptions    v2_top_colOptions  v2_bottom_colOptions  gridTaskDataColunm
            const settingArr = JSON.parse(localStorage.getItem('recordTableOpt'))
            if (settingArr != null) {
                this.colOptions = settingArr
            }
            const settingArr2 = JSON.parse(localStorage.getItem('v1_top_colOptions'))
            if (settingArr2 != null) {
                this.v1_top_colOptions = settingArr2
            }
            const settingArr3 = JSON.parse(localStorage.getItem('v1_bottom_colOptions'))
            if (settingArr3 != null) {
                this.v1_bottom_colOptions = settingArr3
            }
            const settingArr4 = JSON.parse(localStorage.getItem('v2_top_colOptions'))
            if (settingArr4 != null) {
                this.v2_top_colOptions = settingArr4
            }
            const settingArr5 = JSON.parse(localStorage.getItem('v2_bottom_colOptions'))
            if (settingArr5 != null) {
                this.v2_bottom_colOptions = settingArr5
            }
            const settingArr6 = JSON.parse(localStorage.getItem('gridTaskDataColunm'))
            if (settingArr6 != null) {
                this.taskOpt = settingArr6
            }
        },
        selchange(val) {
            var arr = this.v1_top_colSelect.filter(i => val.indexOf(i) < 0) // 未选中
            this.overDueFeedBackData1.columns.filter(i => {
                if (arr.indexOf(i.title) != -1) {
                    i.istrue = false
                } else {
                    i.istrue = true
                }
            })
            this.overDueFeedBackData1.columns = this.overDueFeedBackData1.columns.sort(this.compare('istrue'))
            // this.$nextTick(() => {
            //     this.$refs.overDueFeedBackRef1.doLayout()
            // })
        },
        compare(property) {
            return function(a, b) {
                var value1 = a[property]
                var value2 = b[property]
                return value2 - value1
            }
        },
        // 跳转反馈详情
        tofeedBack(id) {
            this.$router.push({
                path: 'Details?id=' + id
            })
        },
        totaskDetail(id) {
            this.$router.push({
                path: 'taskDetail?id=' + id
            })
        },
        // 请求任务关闭原因列表
        async getcloseReasonList() {
            try {
                const result = await taskPandect.GetTaskCloseReason()
                if (result.success) {
                    this.closeReasonList = result.data
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 填写任务关闭备注
        getCloseRemark(Value) {
            this.closeForm.remark = Value
        },
        // 确认任务关闭
        confirmCloseRow(formName) {
            this.$refs[formName].validate(async valid => {
                if (valid) {
                    try {
                        const result = await taskPandect.CloseTask(this.closeForm, this.taskCommonId)
                        if (result.success) {
                            this.$message({
                                type: 'success',
                                message: '关闭成功'
                            })
                            this.closeDialogVisible = false
                            this.$refs['closeForm'].resetFields()
                        } else {
                            this.$message({
                                type: 'error',
                                message: result.message
                            })
                        }
                    } catch (err) {
                        console.log(err)
                        this.$message.error('服务器异常')
                    }
                } else {
                    return false
                }
            })
        },
        getCreateTrack(Value) {
            this.createTaskForm.trackItems = Value
        },
        // 取消任务关闭
        closeCancel() {
            this.closeDialogVisible = false
        },
        // 表单清空
        closeChange(val) {
            this.closeDialogVisible = val
            this.$refs['closeForm'].resetFields()
        },
        // V3创建子任务
        createRow() {
            this.getUserListById(this.rowData.productId)
            const a = this.rowData.otherPrincipalUserName ? this.rowData.otherPrincipalUserName.split(',') : []
            const b = this.rowData.otherPrincipaluserId ? this.rowData.otherPrincipaluserId.split(',') : []
            const c = a.map((name, i) => ({ name: name, id: b[i] }))
            var list = {
                continueMeeting: this.rowData.continueMeeting,
                ctag: 'C2',
                currentProgress: '',
                expectedCompletedDate: '',
                masterUser: this.rowData.masterUser,
                masterId: this.rowData.masterId,
                meetingRecordId: this.meetingRecordId,
                nextPlan: '',
                otherList: c,
                otherPrincipalUserNameString: this.rowData.otherPrincipalUserName,
                otherPrincipalUserId: b,
                responsibleUserId: this.rowData.masterId,
                responsibleUserName: this.rowData.masterUser,
                otherPrincipaluserList: [],
                title: '',
                isEdit: true,
                type: 'add'
            }
            this.gridData.data.push(list)
        },
        // V3子任务添加保存
        async createMeetingRecordTask(data) {
            const parmars = {
                ctag: data.ctag,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.expectedCompletedDate,
                meetingRecordId: data.meetingRecordId,
                nextPlan: data.nextPlan,
                title: data.title,
                masterUser: data.masterId,
                otherPrincipalUserId: data.otherPrincipalUserId,
                responsibleUserId: data.responsibleUserId
            }
            if (this.recordsName == '超期记录') {
                parmars.severelyOverdue = false
            } else {
                parmars.severelyOverdue = true
            }
            try {
                const result = await DelateMetting.createMeetingRecordTask(parmars)
                if (result.success) {
                    this.$message({
                        type: 'success',
                        message: '保存成功'
                    })
                    this.meetingRecordTask()
                } else {
                    this.$message({
                        type: 'error',
                        message: result.message
                    })
                    this.meetingRecordTask()
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // V3子任务修改保存
        async updateMeetingRecordTask(data) {
            const parmars = {
                ctag: data.ctag,
                currentProgress: data.currentProgress,
                expectedCompletedDate: data.expectedCompletedDate,
                meetingRecordId: data.meetingRecordId,
                nextPlan: data.nextPlan,
                title: data.title,
                masterUser: data.masterId,
                continueMeeting: data.continueMeeting,
                meetingRecordFeedBackId: data.meetingRecordFeedBackId,
                otherPrincipalUserId: data.otherPrincipaluserList,
                responsibleUserId: data.responsibleUserId
            }
            try {
                const result = await DelateMetting.updateMeetingRecordTask(parmars)
                if (result.success) {
                    this.meetingRecordTask()
                    this.$message.success('修改成功')
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // V3子表列表
        async meetingRecordTask() {
            const id = this.$route.query.id
            const num = this.rowData.feedBackNumber

            try {
                const result = await DelateMetting.meetingRecordTask(id, num)
                if (result.success) {
                    if (result.data) {
                        result.data.forEach(element => {
                            element.isEdit = false
                            element.type = 'history'
                        })
                        this.gridData.data = result.data
                        console.log('this.gridData', this.gridData.data)
                    } else {
                        this.gridData.data = []
                    }

                    console.log('信息', result.data)
                }
            } catch (err) {
                this.gridData.data = []
                console.log(err)
            }
        },

        edtiTaskCellClick(row, column) {
            const rowData = JSON.parse(JSON.stringify(row))
            if (column.label == '下一步措施') {
                this.innerVisible = true
                this.rowData = rowData
                this.taskEditForm = rowData
            }
        },
        changeMasterName(e) {
            let ids = ''
            this.recrodsUserList.forEach(element => {
                if (element.name == e) {
                    ids = element.id
                }
            })
            this.cellEditDialogForm.masterId = ids
        },
        changeOtherName(e) {
            let ids = ''
            this.recrodsUserList.forEach(element => {
                if (element.name == e) {
                    ids = element.id
                }
            })
            this.cellEditDialogForm.otherPrincipaluserId = ids
        },
        gridDatatChange(row, cg) {
            console.log(this.gridData.data)
            this.getUserListById(this.rowData.productId)
            const that = this
            // 点击修改 判断是否已经保存所有操作
            for (const i of that.gridData.data) {
                if (i.isEdit && i.id != row.id) {
                    that.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            // 是否是取消操作
            if (!cg) {
                console.log('是否是取消操作')

                row.isEdit = !row.isEdit

                this.meetingRecordTask()
                return
            }
            // 提交数据
            if (row.isEdit) {
                // 项目是模拟请求操作
                console.log('rpw', row)
                if (row.type == 'add') {
                    if (row.title == '' || row.nextPlan == '' || !row.expectedCompletedDate || row.expectedCompletedDate == '') {
                        this.$message.error('请填写完整表格信息后保存')
                        return
                    } else {
                        this.createMeetingRecordTask(row)
                        row.isEdit = false
                    }
                } else {
                    if (
                        row.title == '' ||
            row.nextPlan == '' ||
            row.expectedCompletedDate == '' ||
            row.masterId == '' ||
            row.responsibleUserId == '' ||
            row.otherPrincipaluserList.length < 1
                    ) {
                        this.$message.error('请填写完整表格信息后保存')
                        return
                    } else {
                        this.updateMeetingRecordTask(row)
                        row.isEdit = false
                    }
                    row.isEdit = false
                }
            } else {
                that.gridData.sel = JSON.parse(JSON.stringify(row))
                row.isEdit = true
            }
        },
        gridTaskDataChange(row, cg) {
            console.log(this.gridData.data)
            this.getUserListById(row.productId)
            const that = this
            // 点击修改 判断是否已经保存所有操作
            for (const i of that.gridTaskData.data) {
                if (i.isEdit && i.id != row.id) {
                    that.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            // 是否是取消操作
            if (!cg) {
                console.log('是否是取消操作')

                row.isEdit = !row.isEdit

                this.getMeetingRecord()
                return
            }
            // 提交数据
            if (row.isEdit) {
                // 项目是模拟请求操作
                console.log('rpw', row)
                // <!--
                //                     { title: '反馈ID', field: 'feedBackNumber', width: 80, istrue: true },
                //                     { title: 'C1/C2', field: 'taskCTag', width: 80, istrue: true },
                //                     { title: '主题', field: 'taskTitle', width: 120, istrue: true },
                //                     { title: '下一步措施', field: 'nextPlan', width: 200, istrue: true },
                //                     { title: '当前进展', field: 'currentProgress', width: 200, istrue: true },
                //                     { title: '责任人', field: 'taskResponsibleUserName', width: 200, istrue: true },
                //                     { title: '计划完成时间', field: 'taskExpectedCompletedDate', width: 120, istrue: true },
                //                     { title: '是否继续上会', field: 'continueMeeting', width: 200, istrue: true },
                //                     { title: '主负责人', field: 'masterId', width: 200, istrue: true },
                //                     { title: '其他负责人', field: 'otherPrincipaluserIdList', width: 200, istrue: true }, -->
                if (
                    row.taskTitle == '' ||
          row.nextPlan == '' ||
          row.taskExpectedCompletedDate == '' ||
          row.masterId == '' ||
          row.taskResponsibleUserId == '' ||
          !row.otherPrincipaluserIdList ||
          row.otherPrincipaluserIdList.length < 1
                ) {
                    this.$message.error('请填写完整表格信息后保存')
                } else {
                    this.updateRecordTask(row)

                    row.isEdit = false
                }
                row.isEdit = false
            } else {
                that.gridTaskData.sel = JSON.parse(JSON.stringify(row))
                row.isEdit = true
            }
        },
        // 表格编辑修改
        tableInputChange(row, index, cg) {
            this.getUserListById(row.productId)
            console.log(this.recordTableData.data)
            const that = this
            // 点击修改 判断是否已经保存所有操作
            for (const i of that.recordTableData.data) {
                if (i.isSet && i.id != row.id) {
                    that.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            // 是否是取消操作
            if (!cg) {
                console.log('是否是取消操作')
                row.isSet = !row.isSet
                this.getMeetingRecord()
                return
            }

            // 提交数据
            if (row.isSet) {
                // 项目是模拟请求操作
                row.isSet = false
                const parmars = JSON.parse(JSON.stringify(that.recordTableData.sel))
                this.updateMeetingRecordFeedBack(parmars)
            } else {
                that.recordTableData.sel = JSON.parse(JSON.stringify(row))
                row.isSet = true
            }
            // ======
        },
        // 同步
        synchronous() {
            this.sendV3(this.$route.query.id)
        },
        async sendV3(_data) {
            try {
                const result = await DelateMetting.sendV3(_data)
                if (result.success) {
                    console.log(result)
                    this.$message.success('同步成功')
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },

        handleClose(row) {
            this.closeDialogVisible = true
            this.taskCommonId = row.taskNumber
        },
        cancelCreate() {
            this.updateDialogShow = false
        },
        confirmCreate() {
            console.log(this.gridData.data)
        },

        cellEditDialogChange() {
            this.cellEditDialogForm = {}
            if (this.$refs['cellEditDialogForm'] !== undefined) {
                // 清除表单内容和清除表单验证消息
                this.$refs['cellEditDialogForm'].resetFields()
            }
            this.cellEditDialog = false
        },
        saveModiffy(formName) {
            this.$refs[formName].validate(valid => {
                if (valid) {
                    this.cellEditDialogForm.otherPrincipalUserName = this.cellEditDialogForm.otherPrincipalUserName.join(',')
                    this.cellEditDialogForm.otherPrincipaluserId = this.cellEditDialogForm.otherPrincipaluserId.join(',')

                    console.log(this.cellEditDialogForm)
                    this.cellEditDialog = false
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },

        // 显示问题详情列表
        contentDetail(row) {
            console.log(row)
        },
        tableRowClassName({ row }) {
            if (row.reason == '' || row.reason == null) {
                return 'warning-row'
            } else {
                return 'default-row'
            }
        },
        publishClick() {
            const id = this.$route.query.id

            this.publishMeeting(id)
        },
        async publishMeeting(_parmars) {
            try {
                const result = await DelateMetting.publishMeeting(_parmars)
                if (result.success) {
                    this.$message.success(result.message)
                    this.getVersionMeetingList()
                }
            } catch (err) {
                console.log(err)
            }
        },
        masterTaskChange(e, type) {
            console.log(e)
            let names = ''
            this.productUserList.forEach(element => {
                if (element.id == e) {
                    names = element.name
                }
            })
            if (type == 'taskMissionForm') {
                this.taskMissionForm.master = names
            } else if (type == 'createForm') {
                this.createForm.master = names
            } else if (type == 'replyForm') {
                this.replyForm.master = names
            }
        },
        createMasterChange(e) {
            console.log(e)
            let names = ''
            this.productUserList.forEach(element => {
                if (element.id == e) {
                    names = element.name
                }
            })
            this.createForm.master = names
        },
        changeTaskChange(e) {
            let names = ''
            this.productUserList.forEach(element => {
                if (element.id == e) {
                    names = element.name
                }
            })
            console.log(e)
            console.log(names)

            this.taskMissionForm.applicantName = names
        },
        changeReplyChange(e) {
            let names = ''
            this.productUserList.forEach(element => {
                if (element.id == e) {
                    names = element.name
                }
            })
            this.replyForm.applicantName = names
        },
        changeCreateChange(e) {
            let names = ''
            this.productUserList.forEach(element => {
                if (element.id == e) {
                    names = element.name
                }
            })
            this.createForm.applicantName = names
        },
        editoronblur(formName, words) {
            this.$refs[formName].validateField(words)
        },

        async UserGetUserInfoAsync() {
            try {
                const result = await FeedBack.UserGetUserInfoAsync()
                if (result.success) {
                    this.userInfo = result.data
                }
            } catch (err) {
                console.log(err)
            }
        },
        saveTaskMissionForm(formName) {
            this.$refs[formName].validate(async valid => {
                if (valid) {
                    console.log(this.taskMissionForm)
                    const parmars = {
                        meetingId: this.$route.query.id,
                        agenda: this.taskMissionForm.agenda,
                        version: this.pannelName,
                        taskNumber: this.taskMissionForm.taskNumber,
                        continueMeetingTag: this.taskMissionForm.continueMeetingTag,
                        remark: this.taskMissionForm.remark,
                        id: this.taskMissionForm.id,
                        discussionContent: this.taskMissionForm.discussionContent,
                        otherPrincipalUserId: this.taskMissionForm.otherPrincipalUserId,
                        otherPrincipalUserName: this.taskMissionForm.otherPrincipalUserName,
                        feedBackNumber: this.taskMissionForm.feedBackNumber,
                        master: this.taskMissionForm.master,
                        masterId: this.taskMissionForm.masterId,
                        reason: this.taskMissionForm.reason,
                        applicantId: this.taskMissionForm.applicantId,
                        applicantName: this.taskMissionForm.applicantName
                    }
                    console.log(parmars)

                    try {
                        const result = await DelateMetting.SaveAssociate(parmars)
                        if (result.success) {
                            this.taskMissionVisible = false
                            this.$message.success('保存成功')
                            this.getVersionMeetingList()
                        } else {
                            this.$message.error(result.message)
                        }
                    } catch (err) {
                        console.log(err)
                        this.$message.error('服务器异常')
                    }
                }
            })
        },
        async getTaskFromDetail(_id, version) {
            try {
                const result = await DelateMetting.GetVersionMeetingInfo(_id, version)
                if (result.success) {
                    this.taskMissionForm = result.data
                    const otherList = result.data.otherPrincipalUserName
                    if (otherList && otherList != '') {
                        this.taskMissionForm.otherPrincipalUserName = result.data.otherPrincipalUserName.split(',')
                    } else {
                        this.taskMissionForm.otherPrincipalUserName = []
                    }
                    const otherList2 = result.data.otherPrincipalUserId
                    if (otherList2 && otherList2 != '') {
                        this.taskMissionForm.otherPrincipalUserId = result.data.otherPrincipalUserId.split(',')
                    } else {
                        this.taskMissionForm.otherPrincipalUserId = []
                    }
                    this.taskMissionForm.agenda = result.data.agenda
                    this.taskMissionForm.id = result.data.id
                    this.taskMissionForm.taskCreater = result.data.createUserName
                    // this.taskMissionForm.createUser = 23232
                    const result2 = await DelateMetting.GetTaskOverTime(result.data.taskNumber)
                    if (result2.success) {
                        // const feedInfo = result.data.feedBackOverTimeDto
                        this.taskMissionForm.createUser = result2.data.createUser
                    } else {
                        this.$message.error(result2.message)
                    }
                    this.startTime2 = ''
                    this.endTime2 = ''
                    this.startTime2 = result.data.agenda ? result.data.agenda.substring(0, 5) : ''
                    this.endTime2 = result.data.agenda ? result.data.agenda.substring(6, 11) : ''
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                // this.$message.error('服务器异常');
            }
        },
        async getCreateFromDetail(_id, version) {
            try {
                const result = await DelateMetting.GetVersionMeetingInfo(_id, version)
                if (result.success) {
                    this.createForm = result.data
                    this.createForm.agenda = result.data.agenda
                    this.createForm.continueMeetingTag = result.data.continueMeetingTag
                    this.createForm.discussionContent = result.data.discussionContent
                    this.createForm.reason = result.data.reason
                    this.createForm.id = result.data.id
                    this.createForm.master = result.data.master
                    this.createForm.masterId = result.data.masterId
                    this.createForm.meetingId = this.$route.query.id
                    this.createForm.version = '0'
                    this.createForm.feedBackNumber = result.data.feedBackNumber

                    const otherList = result.data.otherPrincipalUserName
                    if (otherList && otherList != '') {
                        this.createForm.otherPrincipalUserName = result.data.otherPrincipalUserName.split(',')
                    } else {
                        this.createForm.otherPrincipalUserName = []
                    }
                    const otherList2 = result.data.otherPrincipalUserId
                    if (otherList2 && otherList2 != '') {
                        this.createForm.otherPrincipalUserId = result.data.otherPrincipalUserId.split(',')
                    } else {
                        this.createForm.otherPrincipalUserId = []
                    }

                    this.createForm.remark = result.data.remark

                    this.createForm.createUserName = result.data.createUserName
                    this.createForm.createDay = result.data.createDay
                    this.createForm.productName = result.data.productName
                    this.createForm.title = result.data.title
                    this.createForm.applicantId = result.data.applicantId
                    this.createForm.applicantName = result.data.applicantName

                    this.createForm.reviseRecords = result.data.reviseRecords
                    this.startTime = ''
                    this.endTime = ''
                    this.startTime = result.data.agenda ? result.data.agenda.substring(0, 5) : ''
                    this.endTime = result.data.agenda ? result.data.agenda.substring(6, 11) : ''
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                // this.$message.error('服务器异常');
            }
        },
        async replayFromDetail(_id, version) {
            try {
                const result = await DelateMetting.GetVersionMeetingInfo(_id, version)
                if (result.success) {
                    this.replyForm = result.data
                    this.replyForm.agenda = result.data.agenda
                    this.replyForm.continueMeetingTag = result.data.continueMeetingTag
                    this.replyForm.discussionContent = result.data.discussionContent
                    this.replyForm.id = result.data.id
                    this.replyForm.master = result.data.master
                    this.createForm.masterId = result.data.masterId
                    this.replyForm.meetingId = this.$route.query.id
                    this.replyForm.version = this.pannelName
                    this.replyForm.feedBackNumber = result.data.feedBackNumber
                    const otherList = result.data.otherPrincipalUserName
                    if (otherList && otherList != '') {
                        this.replyForm.otherPrincipalUserName = result.data.otherPrincipalUserName.split(',')
                    } else {
                        this.replyForm.otherPrincipalUserName = []
                    }
                    const otherList2 = result.data.otherPrincipalUserId
                    if (otherList2 && otherList2 != '') {
                        this.replyForm.otherPrincipalUserId = result.data.otherPrincipalUserId.split(',')
                    } else {
                        this.replyForm.otherPrincipalUserId = []
                    }

                    this.replyForm.reason = result.data.reason
                    this.replyForm.remark = result.data.remark
                    this.replyForm.createUserName = result.data.createUserName
                    this.replyForm.createDay = result.data.createDay
                    this.replyForm.productName = result.data.productName
                    this.replyForm.title = result.data.title
                    this.replyForm.applicantId = result.data.applicantId
                    this.replyForm.applicantName = result.data.applicantName
                    this.replyForm.reviseRecords = result.data.reviseRecords
                    this.startTime = ''
                    this.endTime = ''
                    this.startTime = result.data.agenda ? result.data.agenda.substring(0, 5) : ''
                    this.endTime = result.data.agenda ? result.data.agenda.substring(6, 11) : ''
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                // this.$message.error('服务器异常');
            }
        },
        saveCreateForm(formName) {
            console.log(formName)
            console.log(this.createForm)
            this.$refs[formName].validate(async valid => {
                if (valid) {
                    this.createForm.meetingId = this.$route.query.id
                    this.createForm.version = this.pannelName
                    console.log(this.createForm)
                    try {
                        const result = await DelateMetting.SaveAssociate(this.createForm)
                        console.log('保存结果', result)
                        if (result.success) {
                            console.log(result)
                            this.createDialogVisible = false
                            this.$message.success('保存成功')
                            this.getVersionMeetingList()
                        } else {
                            this.$message.error(result.message)
                        }
                    } catch (err) {
                        console.log(err)
                        this.$message.error('服务器异常')
                    }
                }
            })
        },
        // 保存会议反馈弹出框
        selectIdChange(e, type) {
            console.log(e)
            const idArr = []
            this.allUserList.forEach(element => {
                e.forEach(els => {
                    if (element.id == els) {
                        idArr.push(element.name)
                    }
                })
            })

            if (type == 'createForm') {
                this.createForm.otherPrincipalUserName = idArr
            } else if (type == 'replyForm') {
                this.replyForm.otherPrincipalUserName = idArr
            }
        },
        selectTaskIdChange(e) {
            console.log(e)
            const idArr = []
            this.allUserList.forEach(element => {
                e.forEach(els => {
                    if (element.name == els) {
                        idArr.push(element.id)
                    }
                })
            })
            this.taskMissionForm.otherPrincipalUserId = idArr
        },
        // 模态框关闭
        createDialogVisibleChange() {
            this.createDialogVisible = false
        },
        replyDialogVisibleChange() {
            this.endTime = ''
            this.startTime = ''
            this.replyForm = {
                agenda: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                reason: '', // 上会原因
                remark: '', // 备注
                version: '',
                createUserName: '', // 反馈人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            }
            if (this.$refs['replyForm'] !== undefined) {
                // 清除表单内容和清除表单验证消息
                this.$refs['replyForm'].resetFields()
            }
            this.replyDialogVisible = false
        },

        taskMissionVisibleChange() {
            this.startTime2 = ''
            this.endTime2 = ''

            this.taskMissionForm = {
                id: '',
                agenda: '',
                feedBackNumber: '', // 反馈ID
                createUserName: '', // 反馈人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                discussionContent: '', // 本次会议讨论内容
                continueMeetingTag: true, // 是否继续上会
                currentEsponsibleUserName: '', // 主负责人
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                remark: '', // 备注
                reviseRecords: '', // V2信息修订记录
                principalName: [],
                mainName: [],
                meetingId: '',
                reason: '' // 上会原因
            }
            this.$refs['taskMissionForm'].resetFields()
            this.taskMissionVisible = false
        },
        // 点击新建
        addCreateFeedBack(version, type) {
            console.log(version)
            console.log(type)
            this.createType = type

            if (type == 'add') {
                this.noTaskReason = false
                this.noFeedBackReason = false
                this.createDialogTitle = '新增上会反馈'
            } else {
                this.createDialogTitle = '反馈编辑'
            }

            this.resetForm('createForm')
            // 清空编辑框
            this.createForm = {
                agenda: '',
                continueMeetingTag: true, // 是否继续上会
                discussionContent: '', // 本次会议讨论内容
                id: '',
                master: '', // 主负责人
                masterId: '', // 主负责人id
                meetingId: '',
                feedBackNumber: '', // 反馈ID
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                reason: '', // 上会原因
                remark: '', // 备注
                version: '',
                createUserName: '', // 反馈人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                reviseRecords: '', // V2信息修订记录
                mainName: [],
                currentStageUser: ''
            }
            this.endTime = ''
            this.startTime = ''

            this.createDialogVisible = true
        },
        addtaskMission(version, type) {
            console.log(version)
            console.log(type)
            this.taskMissionType = type
            if (type == 'add') {
                this.taskMissionVisible = true
                this.noTaskReason = false
                this.noFeedBackReason = false

                this.taskMissionTitle = '新建上会任务'
            } else {
                this.taskMissionTitle = '任务编辑'
            }

            this.resetForm('taskMissionForm')
            // 清空编辑框
            this.taskMissionForm = {
                id: '',
                agenda: '',
                feedBackNumber: '', // 反馈ID
                createUserName: '', // 反馈人
                createDay: '', // 创建天数
                productName: '', // 所属产品
                title: '', // 标题
                discussionContent: '', // 本次会议讨论内容
                continueMeetingTag: true, // 是否继续上会
                currentEsponsibleUserName: '', // 主负责人
                otherPrincipalUserId: [], // 其他负责人id
                otherPrincipalUserName: [], // 其他负责人name
                applyer: '', // 申请人
                applicantId: '',
                applicantName: '',
                remark: '', // 备注
                reviseRecords: '', // V2信息修订记录
                principalName: [],
                mainName: [],
                meetingId: '',
                reason: '' // 上会原因
            }
            this.endTime = ''
            this.startTime = ''

            this.taskMissionVisible = true
        },

        getObjectURL(file) {
            let url = null
            if (window.createObjectURL != undefined) {
                // basic
                url = window.createObjectURL(file)
            } else if (window.webkitURL != undefined) {
                // webkit or chrome
                url = window.webkitURL.createObjectURL(file)
            } else if (window.URL != undefined) {
                // mozilla(firefox)
                url = window.URL.createObjectURL(file)
            }
            return url
        },
        addTag(newTag) {
            let istrue = false
            this.otherPrincipalList.forEach(element => {
                if (element.userName == newTag || element.email == newTag) {
                    istrue = true
                }
            })
            if (istrue) {
                const tag = {
                    email: newTag,
                    userName: newTag.substring(0, 2) + Math.floor(Math.random() * 10000000)
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.recipientUser.push(tag)
            } else {
                const tag = {
                    email: newTag,
                    userName: null
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.recipientUser.push(tag)
            }
        },
        addTag2(newTag) {
            let istrue = false
            this.otherPrincipalList.forEach(element => {
                if (element.userName == newTag || element.email == newTag) {
                    istrue = true
                }
            })
            if (istrue) {
                const tag = {
                    email: newTag,
                    userName: newTag.substring(0, 2) + Math.floor(Math.random() * 10000000)
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.copyRecipients.push(tag)
            } else {
                const tag = {
                    email: newTag,
                    userName: null
                }
                this.otherPrincipalList.push(tag)
                this.versionForm.copyRecipients.push(tag)
            }
        },
        nameWithLang({ userName, email }) {
            if (userName) {
                return `${email} <${userName}>`
            } else {
                return `${email}`
            }
        },

        // 接口函数开始↓↓↓↓↓↓↓↓↓↓
        // 回复确认
        saveReplyForm(formName) {
            console.log(formName)
            console.log(this.replyForm)

            this.$refs[formName].validate(async valid => {
                if (valid) {
                    this.replyForm.meetingId = this.$route.query.id
                    this.replyForm.version = this.pannelName
                    try {
                        const result = await DelateMetting.SaveAssociate(this.replyForm)
                        console.log('保存结果', result)
                        if (result.success) {
                            console.log(result)
                            this.replyDialogVisible = false
                            this.clearForm(formName)
                            this.$message.success('保存成功')
                            this.getVersionMeetingList()
                        } else {
                            this.$message.error(result.message)
                        }
                    } catch (err) {
                        console.log(err)
                        this.$message.error('服务器异常')
                    }
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },
        // 推送
        async pushSeverelyOverdue(_id) {
            try {
                const result = await DelateMetting.PushSeverelyOverdue(_id)
                if (result.success) {
                    console.log('result', result)
                    this.$message.success('推送成功')
                    this.getVersionMeetingList()
                    this.rowObj = {}
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 删除
        async remove(_id, version) {
            try {
                const result = await DelateMetting.Remove(_id, version)
                if (result.success) {
                    console.log('result', result)
                    this.$message.success('删除成功')
                    this.getVersionMeetingList()
                    this.rowObj = {}
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 超期反馈V1table
        async getVersionMeetingList() {
            const that = this
            try {
                const result = await DelateMetting.GetVersionMeetingList(that.$route.query.id, that.pannelName)
                if (result.success) {
                    this.feedbackTaskData1.data = []
                    this.overDueFeedBackData1.data = []
                    this.feedbackTaskData2.data = []
                    this.overDueFeedBackData2.data = []
                    if (this.pannelName == 'V1') {
                        this.overDueFeedBackDataloading = true
                        setTimeout(() => {
                            this.overDueFeedBackDataloading = false
                            this.overDueFeedBackData1.data = result.data.feedBackList
                            this.feedbackTaskData1.data = result.data.taskList
                        }, 1000)
                    } else if (this.pannelName == 'V2') {
                        this.feedbackTaskDataloading = true
                        setTimeout(() => {
                            this.feedbackTaskDataloading = false
                            this.overDueFeedBackData2.data = result.data.feedBackList
                            this.feedbackTaskData2.data = result.data.taskList
                        }, 1000)
                    }
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },

        // 根据反馈ID请求任务下拉框数据
        async getFeedBackOverTime(feedBackNumber) {
            try {
                const result = await DelateMetting.GetFeedBackOverTime(feedBackNumber)
                if (result.success) {
                    console.log('result', result.data)
                    this.createForm.createDay = result.data.createDay
                    this.createForm.createUser = result.data.createUser
                    this.createForm.productName = result.data.productName
                    this.createForm.title = result.data.title

                    this.getUserListById(result.data.productId)
                } else {
                    if (this.dialogFormVisible) {
                        this.dialogFormTemp.feedBackNumber = ''
                    }
                    if (this.recordsFormVisible) {
                        this.recordsForm.feedBackNumber = ''
                    }
                    if (this.createDialogVisible) {
                        this.createForm.feedBackNumber = ''
                    }

                    this.$message.error('该反馈ID不存在')
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        async getTaskDay(taskNumber) {
            try {
                const result = await DelateMetting.GetTaskOverTime(taskNumber)
                if (result.success) {
                    this.taskMissionForm.createUser = result.data.createUser
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
            }
        },
        // 根据任务ID请求创建天数
        async getTaskOverTime(taskNumber) {
            try {
                const result = await DelateMetting.GetTaskOverTime(taskNumber)
                if (result.success) {
                    console.log('result', result.data.feedBackOverTimeDto)
                    const feedInfo = result.data.feedBackOverTimeDto
                    const taskInfo = result.data

                    if (result.data.feedBackOverTimeDto) {
                        this.taskMissionForm.createUser = feedInfo.createUser
                        this.taskMissionForm.taskCreater = taskInfo.responsibleUserName
                        this.taskMissionForm.createDay = feedInfo.createDay
                        this.taskMissionForm.title = feedInfo.title
                        this.getUserListById(feedInfo.productId)
                        this.taskMissionForm.productName = feedInfo.productName
                        this.taskMissionForm.feedBackNumber = taskInfo.feedBackNumber
                    }
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
            }
        },
        /**
     * 替换字段
     */
        handleDealFilter(arr, key, replaceKey) {
            const newArr = []
            arr.forEach((item, index) => {
                for (var i = 0; i < key.length; i++) {
                    item[key] = item[replaceKey]
                }
                newArr.push(item)
            })
            return newArr
        },
        // 获取发布
        async getEmail() {
            const that = this
            try {
                const result = await DelateMetting.GetEmail(that.$route.query.id, that.pannelName)
                if (result.success) {
                    console.log(result)

                    const arrs = result.data.recipientUser ? result.data.recipientUser : []
                    const arrs2 = result.data.copyRecipients ? result.data.copyRecipients : []
                    arrs.forEach(els => {
                        els.$isDisabled = true
                    })
                    arrs2.forEach(els => {
                        els.$isDisabled = true
                    })
                    this.versionForm.recipientUser = arrs
                    this.versionForm.copyRecipients = arrs2
                    this.versionForm.appendixsName = result.data.appendixsName
                    this.versionForm.content = result.data.content
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error('服务器异常')
            }
        },
        // 发送发布
        async sendEmail(_data, formName) {
            try {
                const result = await DelateMetting.SendEmail(_data)
                if (result.success) {
                    this.$message.success('发送成功')
                    this.fullscreenLoading = false
                    this.getVersionMeetingList()
                    this.clearForm(formName)
                } else {
                    this.fullscreenLoading = false
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.fullscreenLoading = false
                this.$message.error('服务器异常')
            }
        },
        // 会议记录表格
        async getMeetingRecord() {
            const type = this.recordsName == '超期记录' ? 'false' : 'true'
            this.recordTableData.data = []
            try {
                const result = await DelateMetting.GetMeetingRecord(this.$route.query.id, type)

                console.log(result)
                if (result.success) {
                    this.recordTableDataLoading = true
                    setTimeout(() => {
                        this.recordTableDataLoading = false
                        if (result.data.feedBackList) {
                            result.data.feedBackList.forEach(element => {
                                element.isSet = false
                            })
                            result.data.taskList.forEach(element => {
                                element.isEdit = false
                            })
                            this.recordTableData.data = result.data.feedBackList
                            this.gridTaskData.data = result.data.taskList
                        } else {
                            this.recordTableData.data = []
                            this.gridTaskData.data = []
                        }
                    }, 1000)
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },

        // 添加会议记录
        async addMettingRecord(_data) {
            try {
                const result = await DelateMetting.AddMettingRecord(_data)
                console.log(result)
                if (result.success) {
                    this.getMeetingRecord()
                    this.clearForm('recordsForm')
                    this.$message.success('添加成功')
                } else {
                    this.$message.error(result.message)
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        // 删除会议记录
        async deleteMettingRecord(_id) {
            try {
                const result = await DelateMetting.DeleteMettingRecord(_id)
                if (result.success) {
                    this.getMeetingRecord()
                    this.$message.success('删除成功')
                }
                console.log(result)
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        // 修改会议记录
        async updateMeetingRecordFeedBack(_data) {
            console.log('参数', _data)
            try {
                const result = await DelateMetting.updateMeetingRecordFeedBack(_data)
                if (result.success) {
                    console.log(result)
                    this.$message.success('修改成功')
                    this.getMeetingRecord()
                } else {
                    console.log('111')
                }
                if (result.code == 500) {
                    this.$message.error('服务器错误')
                    this.getMeetingRecord()
                }
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        // V1V2导出查询结果
        async exportMetting() {
            const that = this
            try {
                const result = await DelateMetting.ExportMetting(that.$route.query.id, that.pannelName)
                console.log(result)
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        // 导出会议记录
        async exportMettingRecord() {
            try {
                const result = await DelateMetting.ExportMettingRecord(this.$route.query.id)
                console.log(result)
            } catch (err) {
                console.log(err)
                this.$message.error(err)
            }
        },
        feedIdChange(v) {
            console.log(v)
            this.createForm.createDay = ''
            this.createForm.createUser = ''
            this.createForm.productName = ''
            this.createForm.title = ''
            if (v && v.trim()) {
                this.getFeedBackOverTime(v)
            }
        },

        // 接口函数开始↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
        // 根据反馈ID请求任务下拉框数据
        selectTaskChange(v) {
            console.log(v)
            this.recordsForm.taskNumberList = []
            this.taskList = []
            if (v && v.trim()) {
                // recordsForm.feedBackNumber
                this.getFeedBackOverTime(v)
            }
        },
        async taskQuery(v) {
            this.dialogFormTemp.productName = ''
            this.productUserList = []
            this.recrodsUserList = []
            if (v && v.trim()) {
                try {
                    const result = await DelateMetting.GetFeedBackOverTime(v)
                    if (result.success) {
                        this.dialogFormTemp.productName = result.data.productName
                        this.getUserListById(result.data.productId)
                    } else {
                        this.$message.error(result.message)
                        this.dialogFormTemp.productName = ''
                    }
                } catch (err) {
                    this.dialogFormTemp.productName = ''

                    this.$message.error('服务器异常')
                }
            }
        },
        // 删除
        deleteConfirm() {
            console.log(this.rowObj)
            this.remove(this.rowObj.id, this.pannelName)
            this.deleteDialogVisible = false
        },

        async publishMeetingv3(id) {
            try {
                const result = await DelateMetting.publishMeetingv3(id)
                if (result.success) {
                    this.$message({
                        type: 'success',
                        message: '推送成功!'
                    })
                }
            } catch (err) {
                console.log(err)
                this.$message({
                    type: 'error',
                    message: '推送错误'
                })
            }
        },
        // 回复
        replyRow(row, type) {
            this.noTaskReason = false
            this.noFeedBackReason = false
            if (type == '1') {
                if (row.reason == '' || row.reason == null) {
                    this.noFeedBackReason = true
                }
                this.replyDialogTitle = '反馈回复'
            } else {
                if (row.reason == '' || row.reason == null) {
                    this.noTaskReason = true
                }
                this.replyDialogTitle = '任务回复'
            }
            this.getUserListById(row.productId)
            console.log(row)
            this.replyDialogVisible = true
            this.replayFromDetail(row.id, this.pannelName)
        },

        //
        taskNumberChange(v) {
            this.taskMissionForm.createUser = ''
            this.taskMissionForm.taskCreater = ''
            this.taskMissionForm.createDay = ''
            this.taskMissionForm.master = ''
            this.taskMissionForm.title = ''
            this.taskMissionForm.productName = ''
            this.taskMissionForm.feedBackNumber = ''
            if (v && v.trim()) {
                this.productUserList = []
                this.getTaskOverTime(v)
            }
        },

        // 读取表格数据
        readMasterUser() {
            // 双层循环
            this.recordTableData.data.map(i => {
                i.isSet = false // 给后台返回数据添加`isSet`标识
                return i
            })
            console.log(this.recordTableData.data)
        },

        // 添加账号
        addMasterUser() {
            this.recordsFormVisible = true
        },
        tableRowDelete(row) {
            console.log('id', row.id)
            this.$confirm('确认删除该条超期记录吗?', '删除', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'error'
            })
                .then(() => {
                    this.deleteMettingRecord(row.id)
                })
                .catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消删除'
                    })
                })
        },
        pushTask(id) {
            console.log(id)
            this.$confirm('确认推送该条严重超期数据吗?', '推送', {
                confirmButtonText: '确定',
                cancelButtonText: '取消',
                type: 'info'
            })
                .then(() => {
                    this.publishMeetingv3(id)
                })
                .catch(() => {
                    this.$message({
                        type: 'info',
                        message: '已取消推送'
                    })
                })
        },
        checkOutRow(row) {
            console.log(row)

            if (!row.masterId || row.masterId == '') {
                this.$message.error('请选择主负责人')
                return
            }
            if (!row.otherPrincipaluserId || row.otherPrincipaluserId == '') {
                this.$message.error('请选择其他负责人')
                return
            }
            this.rowData = row
            this.updateDialogShow = true
            this.meetingRecordId = row.id
            this.meetingRecordTask()
        },
        resetForm(formName) {
            if (this.$refs[formName] !== undefined) {
                // 清除表单内容和清除表单验证消息
                this.$refs[formName].resetFields()
            }
        },

        // 表格编辑修改
        tableInputChange2(row, cg) {
            console.log(this.recordTableData.data)
            const that = this
            // 点击修改 判断是否已经保存所有操作
            for (const i of that.recordTableData.data) {
                if (i.isSet && i.id != row.id) {
                    that.$message.warning('请先保存当前编辑项')
                    return false
                }
            }
            // 是否是取消操作
            if (!cg) {
                console.log('是否是取消操作')
                this.getMeetingRecord()
                // this.readMasterUser()
                return (row.isSet = !row.isSet)
            }
            // 提交数据
            if (row.isSet) {
                // 项目是模拟请求操作
                const parmars = JSON.parse(JSON.stringify(that.recordTableData.sel))
                console.log('参数2：：：', parmars)
                this.updateMeetingRecordFeedBack(parmars)
                // that.readMasterUser()
                row.isSet = false
            } else {
                that.recordTableData.sel = JSON.parse(JSON.stringify(row))
                row.isSet = true
            }
        },
        // 合并数据过滤
        flitterData(arr) {
            const spanOneArr = []
            let concatOne = 0
            arr.forEach((item, index) => {
                if (index === 0) {
                    spanOneArr.push(1)
                } else {
                    if (item.feedBackNumber === arr[index - 1].feedBackNumber) {
                        // 第一列需合并相同内容的判断条件
                        spanOneArr[concatOne] += 1
                        spanOneArr.push(0)
                    } else {
                        spanOneArr.push(1)
                        concatOne = index
                    }
                }
            })
            return {
                one: spanOneArr
            }
        },

        // 合并单元格方法
        objectSpanMethod({ rowIndex, columnIndex }) {
            if (columnIndex === 0 && this.recordTableData.columns[0].istrue) {
                const _row = this.flitterData(this.recordTableData.data).one[rowIndex]
                const _col = _row > 0 ? 1 : 0
                return {
                    rowspan: _row,
                    colspan: _col
                }
            }
        },

        showInput() {
            this.inputVisible = true
            this.$nextTick(_ => {
                console.log(_)
                this.$refs.saveTagInput.$refs.input.focus()
            })
        },
        showInput2() {
            this.inputVisible2 = true
            this.$nextTick(_ => {
                console.log(_)
                this.$refs.saveTagInput2.$refs.input.focus()
            })
        },

        handleInputConfirm() {
            const inputValue = this.inputValue
            if (inputValue) {
                this.dynamicTags.push(inputValue)
            }
            this.inputVisible = false
            this.inputValue = ''
        },
        handleInputConfirm2() {
            const inputValue = this.inputValue2
            if (inputValue) {
                this.dynamicTags2.push(inputValue)
            }
            this.inputVisible2 = false
            this.inputValue2 = ''
        },
        // tab切换
        handleClick(tab) {
            console.log(tab.name)
            if (tab.name == 'V1' || tab.name == 'V2') {
                this.$nextTick(() => {
                    this.$refs.feedbackTaskDataRef1.doLayout()
                    this.$refs.overDueFeedBackRef1.doLayout()
                })
                this.getVersionMeetingList()
            } else {
                this.recordsName = '超期记录'
                this.recordType = '1'
                // this.colOptions.splice(this.colOptions.findIndex(item => item === '当前进展'), 1)
                // this.colSelect.splice(this.colSelect.findIndex(item => item === '当前进展'), 1)
                // this.recordTableData.columns.splice(this.recordTableData.columns.findIndex(item => item.title === '当前进展'), 1)
                // localStorage.setItem('recordTableOpt', JSON.stringify(this.colOptions))
                this.$nextTick(() => {
                    this.$refs.multipleTable.doLayout()
                })

                this.getMeetingRecord()
            }
        },
        handleRecordClick(tab) {
            console.log(tab.name)
            this.recordTableData.data = []
            this.recordType = '1'
            this.getMeetingRecord()
            // if (tab.name == '严重超期记录') {
            //     // 历史主负责人 splice(2, 0, "Lemon", "Kiwi")
            //     this.colOptions.splice(this.colOptions.findIndex(item => item === '历史主负责人'), 0, '当前进展')
            //     this.colSelect.splice(this.colOptions.findIndex(item => item === '历史主负责人'), 0, '当前进展')
            //     this.recordTableData.columns.push({ title: '当前进展', field: 'currentProgress', width: 250, istrue: true })
            //     localStorage.setItem('recordTableOpt', JSON.stringify(this.colOptions))
            //     this.$nextTick(() => {
            //         this.$refs.multipleTable.doLayout()
            //     })
            // } else {
            //     this.recordTableData.columns.splice(this.recordTableData.columns.findIndex(item => item.title === '当前进展'), 1)
            //     this.colOptions.splice(this.colOptions.findIndex(item => item === '当前进展'), 1)
            //     this.colSelect.splice(this.colOptions.findIndex(item => item === '当前进展'), 1)
            //     localStorage.setItem('recordTableOpt', JSON.stringify(this.colOptions))
            //     this.$nextTick(() => {
            //         this.$refs.multipleTable.doLayout()
            //     })
            // }
        },
        handlerecordTypeClick() {
            this.getMeetingRecord()
        },
        // 新增
        addFeedBack(types, title) {
            console.log(types)
            this.feedBackDialogVisible = true
            this.modelTitle = title
            this.modelType = 'add'
        },
        goback() {
            this.$router.push('delateMeeting')
        },
        //
        exportTable() {
            this.exportMetting()
        },
        exportRecord() {
            this.exportMettingRecord()
        },
        // V1发布
        versionOneClick(_vtype) {
            this.versionFormVisible = true
            this.versionTitle = _vtype + '上报'
            this.getEmail()
        },
        // 编辑
        editRow(row, nums) {
            this.noTaskReason = false
            this.noFeedBackReason = false
            this.getUserListById(row.productId)
            if (nums == '1') {
                this.createDialogTitle = '反馈编辑'
                this.createType = 'edit'
                this.createDialogVisible = true
                if (row.reason == '' || row.reason == null) {
                    this.noFeedBackReason = true
                }

                this.getCreateFromDetail(row.id, this.pannelName)
            } else if (nums == '3') {
                this.createDialogTitle = '反馈回复'
                this.createType = 'edit'
                this.createDialogVisible = true
                if (row.reason == '' || row.reason == null) {
                    this.noFeedBackReason = true
                }
                this.getCreateFromDetail(row.id, this.pannelName)
            } else {
                this.taskMissionTitle = '任务回复'
                this.taskMissionType = 'edit'
                this.taskMissionVisible = true
                if (row.reason == '' || row.reason == null) {
                    this.noTaskReason = true
                }
                this.getTaskFromDetail(row.id, this.pannelName)
            }
        },
        // 删除
        deleteRow(row) {
            this.rowObj = row

            this.deleteDialogVisible = true
        },

        saveVersionForm(formName) {
            const recipientUser = this.versionForm.recipientUser ? this.versionForm.recipientUser : []
            const copyRecipients = this.versionForm.copyRecipients ? this.versionForm.copyRecipients : []

            this.dynamicTags.forEach(item => {
                const objs = {
                    userName: '',
                    email: item
                }
                recipientUser.push(objs)
            })
            this.dynamicTags2.forEach(item => {
                const obj = {
                    userName: '',
                    email: item
                }
                copyRecipients.push(obj)
            })
            let type = ''
            if (this.pannelName == 'V1') {
                type = '0'
            } else {
                type = '1'
            }
            this.versionForm.version = type
            this.versionForm.meetingId = this.$route.query.id

            this.versionForm.recipientUser = recipientUser
            this.versionForm.copyRecipients = copyRecipients

            console.log('参数', this.versionForm)

            console.log(formName)
            this.$refs[formName].validate(valid => {
                if (valid) {
                    console.log(this.versionForm)
                    this.fullscreenLoading = true
                    setTimeout(() => {
                        this.sendEmail(this.versionForm, formName)
                    }, 2000)
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },

        saveRecordsForm(formName) {
            this.$refs[formName].validate(valid => {
                if (valid) {
                    this.recordsForm.feedBackNumber = this.recordsForm.feedBackNumber * 1
                    this.recordsForm.meetingId = this.$route.query.id
                    if (this.recordsName == '超期记录') {
                        this.recordsForm.severelyOverdue = false
                    } else {
                        this.recordsForm.severelyOverdue = true
                    }
                    this.addMettingRecord(this.recordsForm)
                } else {
                    console.log('error submit!!')
                    return false
                }
            })
        },
        closeDelete() {
            this.deleteDialogVisible = false
        },
        clearForm(formName) {
            console.log(formName)
            this.$refs[formName].resetFields()
            this.startTime = ''
            this.endTime = ''
            this.feedBackDialogVisible = false
            this.versionFormVisible = false
            this.recordsFormVisible = false
            this.replyDialogVisible = false
            this.replyForm = {}

            this.dynamicTags = []
            this.dynamicTags2 = []
            this.taskList = []
            this.isEmpty = null
            this.isEmpty2 = null
            this.versionForm = {
                appendixsName: '', // 附件名称
                title: '', // 主题
                content: '',
                copyRecipients: [],
                recipientUser: [],
                receiver: '', // 收件人
                recipients: '', // 抄送人
                discussionContent: '', // 发布内容
                addtion: '' // 附加
            }
        },
        seriousDelate(row) {
            console.log(row)
            this.seriousDelateVisible = true
        },
        clearSeriousForm(formName) {
            this.$refs[formName].resetFields()
        },
        timeSelect(val) {
            console.log(val)
        },
        changeAgendaStart(val) {
            const endValid = this.endTime
            if (!val) {
                this.endTime = ''
                this.createForm.agenda = ''
            } else {
                if (!endValid || endValid == '') {
                    this.createForm.agenda = ''
                } else {
                    this.createForm.agenda = val + '-' + this.endTime
                }
            }
        },
        changeAgendaEnd(val) {
            const startValid = this.startTime
            if (!val) {
                this.startTime = ''
                this.createForm.agenda = ''
            } else {
                if (!startValid || startValid == '') {
                    this.createForm.agenda = ''
                } else {
                    this.createForm.agenda = this.startTime + '-' + val
                }
            }
            console.log(this.createForm.agenda)
        },
        changeAgendaStart2(val) {
            const endValid = this.endTime2
            if (!val) {
                this.endTime2 = ''
                this.taskMissionForm.agenda = ''
            } else {
                if (!endValid || endValid == '') {
                    this.taskMissionForm.agenda = ''
                } else {
                    this.taskMissionForm.agenda = val + '-' + this.endTime2
                }
            }
        },
        changeAgendaEnd2(val) {
            const startValid = this.startTime2
            if (!val) {
                this.startTime2 = ''
                this.taskMissionForm.agenda = ''
            } else {
                if (!startValid || startValid == '') {
                    this.taskMissionForm.agenda = ''
                } else {
                    this.taskMissionForm.agenda = this.startTime2 + '-' + val
                }
            }
            console.log(this.taskMissionForm.agenda)
        },
        async getUserList() {
            try {
                const result = await FeedBack.GetAllUserAsync()
                if (result.success) {
                    this.otherPrincipalList = result.data
                    this.allUserList = result.data
                }
            } catch (err) {
                console.log(err)
            }
        },
        async getUserListById(prouctId) {
            try {
                const result = await FeedBack.GetListItemAsync({ id: prouctId })
                if (result.success) {
                    this.productUserList = result.data
                    this.recrodsUserList = result.data
                }
            } catch (err) {
                console.log(err)
            }
        }
    }
}
</script>
<style scoped lang="less">
.mettingDetail {
  padding: 30px;
  height: 100%;
  min-width: 576px;
  overflow: auto;
  box-sizing: border-box;
  .selectCondition {
    display: flex;
    align-items: center;
    position: relative;
    padding: 20px 30px 0px 30px;
    box-sizing: border-box;
    width: 100%;
    height: 60px;
    background: #ffffff;
    box-shadow: 0px 2px 5px 0px rgba(152, 160, 179, 0.2);
    border-radius: 5px;
    ::v-deep .el-tabs__header {
      margin: -1px;
    }
    ::v-deep .el-tabs__nav-wrap::after {
      background-color: #fff;
    }
    .aboutOptions {
      position: absolute;
      right: 20px;
      top: 20px;
      display: flex;
      align-items: center;
      justify-content: flex-end;
    }

    ::v-deep .radioGroups .el-radio-button__inner {
      margin-right: 20px;
      border: 1px solid #dcdfe6;
      height: 40px;
    }

    ::v-deep .el-radio-button .el-radio-button__inner {
      border-radius: 4px;
    }

    ::v-deep .el-radio-button__orig-radio:checked + .el-radio-button__inner {
      border: 1px solid #409eff !important;
    }
  }
  .tableContainer {
    margin-top: 30px;
    .TopDetailTable {
      padding: 0 20px 20px 30px;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #ffffff;
      position: relative;
      min-height: 600px;
    }
    .BottomDetailTable {
      padding: 0 20px 20px 30px;
      margin-top: 30px;
      padding-left: 30px;
      padding-right: 20px;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #ffffff;
      position: relative;
      min-height: 600px;
    }
    .meetingRecordTable {
      height: 780px;
      width: 100%;
      padding-left: 30px;
      padding-right: 20px;
      box-sizing: border-box;
      overflow: hidden;
      background-color: #ffffff;
      position: relative;
    }
    .row-bg {
      width: 100%;
      align-items: center;
      .titleSpan {
        width: 73px;
        height: 18px;
        font-size: 18px;
        font-family: Microsoft YaHei;
        font-weight: 400;
        color: #333333;
        line-height: 64px;
      }

      .aboutOptions {
        height: 70px;
        display: flex;
        align-items: center;
        justify-content: flex-end;
      }
    }
  }
}
::v-deep .el-dialog {
  border-radius: 5px;
}
::v-deep .el-dialog__body {
  overflow-y: auto;
  border-top: 1px solid #cad0d8;
  border-bottom: 1px solid #cad0d8;
}
::v-deep .pushDialog .el-dialog__header {
  width: 100% !important;
}
::v-deep .pushDialog .el-dialog__body {
  padding: 10px 30px;
  height: 40px;
  overflow: auto;
}
::v-deep .pushDialog .el-dialog {
  border-radius: 5px;
  height: 205px;
  box-sizing: border-box;
}
::v-deep .pushDialog .el-dialog__footer {
  padding: 0 20px;
}

::v-deep .deleteDialog .el-dialog__header {
  width: 100% !important;
  border-bottom: 1px solid #ed4747;
}
::v-deep .deleteDialog .el-dialog__body {
  padding: 10px 30px;
  height: 40px;
  overflow: auto;
}
::v-deep .deleteDialog .el-dialog {
  border-radius: 5px;
  box-sizing: border-box;
}
::v-deep .deleteDialog .el-dialog__footer {
  padding: 20px;
}
::v-deep .feedback .el-dialog__header {
  width: 100% !important;
}
::v-deep .feedback .el-dialog__body {
  padding: 10px 30px;
  overflow: auto;
}
::v-deep .feedback .el-dialog {
  border-radius: 5px;
  box-sizing: border-box;
}
::v-deep .versionForm .el-dialog__header {
  width: 100% !important;
}
::v-deep .versionForm .el-dialog__body {
  padding: 10px 30px;
  overflow: auto;
}
::v-deep .versionForm .el-dialog {
  border-radius: 5px;
  box-sizing: border-box;
}

::v-deep .regionDialog {
  border-radius: 5px;
}

::v-deep .regionDialog .el-dialog__body {
  height: 600px;
  overflow-y: auto;
  border-top: 1px solid #cad0d8;
  border-bottom: 1px solid #cad0d8;
}
::v-deep .regionDialog .el-dialog__header {
  width: 100% !important;
}
::v-deep .recordsForm .el-dialog__header {
  width: 100% !important;
}
::v-deep .recordsForm .el-dialog__body {
  padding: 10px 30px;
  height: 170px;
  overflow: auto;
}
::v-deep .recordsForm .el-dialog {
  border-radius: 5px;
  height: 335px;
  box-sizing: border-box;
}
::v-deep .cellEditDialogForm .el-dialog__header {
  width: 100% !important;
}
::v-deep .cellEditDialogForm .el-dialog__body {
  padding: 10px 30px;
  height: 170px;
  overflow: auto;
}
::v-deep .cellEditDialogForm .el-dialog {
  border-radius: 5px;
  height: 335px;
  box-sizing: border-box;
}

::v-deep .innerVisibleDialog .el-dialog__header {
  width: 100% !important;
}
::v-deep .innerVisibleDialog .el-dialog__body {
  padding: 10px 30px;
  height: 335px;
  overflow: auto;
}

::v-deep .el-card__body {
  padding: 0;
}
::v-deep .el-table td,
.el-table th {
  padding: 0;
}
::v-deep .el-table th {
  background-color: #f6f6f6 !important;
}
::v-deep .el-table th {
  font-size: 14px;
  color: #3579e0;
  font-weight: 400;
}
::v-deep .el-table th.gutter {
  display: none;
}
.export_btn {
  margin-left: 10px;
}

.el-tag {
  margin-right: 10px;
  margin-top: 5px;
}
.el-tag + .el-tag {
  margin-right: 10px;
}
.button-new-tag {
  margin-right: 10px;
  margin-top: 5px;
  height: 32px;
  width: 180px;
  line-height: 30px;
  padding-top: 0;
  padding-bottom: 0;
}
.input-new-tag {
  width: 180px;
  margin-right: 10px;
  // vertical-align: top;
  margin-top: 5px;
  margin-right: 10px;
  margin-top: 5px;
}
.tagsInput {
  display: block;
  resize: vertical;
  padding: 5px 15px;
  line-height: 1.5;
  box-sizing: border-box;
  width: 100%;
  font-size: inherit;
  color: #606266;
  background-color: #fff;
  background-image: none;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
}
::v-deep .ql-editor {
  height: 150px;
  overflow: auto;
}
.errors {
  border-color: #f56c6c;
}
.noneDisplay {
  display: none;
}
::v-deep .special > .el-form-item__label:before {
  content: '*';
  color: #f56c6c;
  margin-right: 4px;
}
.el-table-add-row {
  margin-top: 10px;
  width: 100%;
  height: 34px;
  border: 1px dashed #c1c1cd;
  border-radius: 3px;
  cursor: pointer;
  justify-content: center;
  display: flex;
  line-height: 34px;
}

.emailContent {
  padding: 5px 15px;
  border: 1px solid #dcdfe6;
  border-radius: 4px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
  max-height: 250px;
  overflow-y: scroll;
}
::v-deep .emailContent::-webkit-scrollbar-thumb {
  background: #ddd;
  border-radius: 6px;
}
::v-deep .emailContent::-webkit-scrollbar-track {
  /*滚动条里面轨道*/
  border-radius: 0;
  background: transparent;
  border-radius: 5px;
}
::v-deep .emailContent::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 5px;
  height: 13px;
  border-radius: 5px;
}

::v-deep #recordsUl::-webkit-scrollbar-thumb {
  background: #ddd;
  border-radius: 6px;
}
::v-deep #recordsUl::-webkit-scrollbar-track {
  /*滚动条里面轨道*/
  border-radius: 0;
  background: transparent;
  border-radius: 5px;
}
::v-deep #recordsUl::-webkit-scrollbar {
  /*滚动条整体样式*/
  width: 5px;
  height: 13px;
  border-radius: 5px;
}

#recordsUl {
  max-height: 200px;
  min-height: 100px;
  padding: 5px 15px;
  overflow-y: scroll;
  border: 1px solid #dcdfe6;
  background-color: #f5f7fa;
  border-radius: 4px;
  transition: border-color 0.2s cubic-bezier(0.645, 0.045, 0.355, 1);
  li {
    list-style: none;
  }
}
.checkGroup {
  height: 500px;
  overflow: auto;
}
.checkItem {
  display: block;
}
.log_detail {
  width: 100%;
  box-sizing: border-box;
}
.log_detail .log_detail_header .serialNum {
  display: inline-block;
  width: 18px;
  height: 18px;
  background: cornflowerblue;
  color: white;
  border-radius: 50%;
  line-height: 18px;
  text-align: center;
  margin-right: 5px;
  margin-top: 8px;
}

ul > li {
  list-style: none;
}

.filesHv {
  color: #606266;
  display: block;
  margin-right: 40px;
  overflow: hidden;
  padding-left: 4px;
  text-overflow: ellipsis;
  transition: color 0.3s;
  white-space: nowrap;
  text-decoration: none;
}
.filesHv:hover {
  text-decoration: none;
  color: #409eff;
  cursor: pointer;
}
.reserve_row {
  display: flex;
  justify-content: flex-end;
}
.target-label {
  font-size: 14px;
  padding: 0px 12px;
  margin: 2px 0;
  height: 35px;
  line-height: 35px;
}

.target-label i {
  margin-left: 3px;
}
::v-deep .tox .tox-editor-header {
  z-index: 0;
}
.tox .tox-editor-header {
  z-index: 0;
}
.flexEnd {
  margin-bottom: 10px;
  display: flex;
  justify-content: flex-end;
  align-items: center;
}
::v-deep .ql-editor {
  min-height: 200px !important;
}
.el-table .warning-row {
  background: #909399;
}

.el-table .default-row {
  background: #f0f9eb;
}
.currentWeekClass {
  cursor: pointer;
  min-height: 60px;
  text-align: center;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
}
.tabsName {
  margin-top: 10px;
}

.link-type,
.link-type:focus {
  color: rgb(32, 160, 255);
  cursor: pointer;
  text-decoration: underline;
  &:hover {
    color: #337ab7;
  }
}
.option_export,
.option_look,
.option_edit,
.option_delete,
.option_suspend,
.option_confirm,
.option_reback,
.option_close,
.option_update,
.option_life,
.option_task,
.option_more {
  display: inline-block;
  width: 16px;
  height: 16px;
  margin: 0 5px;
  position: relative;
  cursor: pointer;
  top: 5px;
}

.option_export {
  background: url('~@/assets/image/options/Ican_4_Selected@2x.png');

  background-size: contain;
}
.option_update {
  background: url('~@/assets/image/options/Ican_9_Selected@2x.png');
  background-size: contain;
}
.option_delete {
  background: url('~@/assets/image/options/Ican_1_Selected@2x.png');

  background-size: contain;
}
.option_task {
  background: url('~@/assets/image/options/option_task.png');
  background-size: contain;
}
.option_confirm {
  background: url('~@/assets/image/options/circleType8.png');
  background-size: contain;
}
.option_close {
  background: url('~@/assets/image/options/Ican_12_Selected@2x.png');
  background-size: contain;
}
.option_reback {
  background: url('~@/assets/image/options/Ican_3_Selected@2x.png');
  background-size: contain;
}
</style>

<style src="vue-multiselect/dist/vue-multiselect.min.css"></style>
